---
title: "PostgreSQL zu MariaDB migrieren, im Browser"
description: "Migriere eine PostgreSQL-Datenbank zu MariaDB: Eine pg_dump-Datei wird ein Skript mit denselben Tabellen, Schlüsseln und Daten, plus Bericht über jede Änderung."
canonical: https://intosql.com/de/postgresql-in-mariadb
last_updated: 2026-10-15
---

# PostgreSQL zu MariaDB migrieren, im Browser

Leg einen einfachen Dump aus pg_dump oder pg_dumpall ab, als .sql oder .sql.gz, und lade ein MariaDB-Skript mit denselben Tabellen, Schlüsseln, Indizes und Daten herunter. Jeder Wert, den MariaDB nicht unverändert aufnehmen kann, und jedes Objekt, das es nicht übernimmt, steht im Bericht.

[Leitfaden: PostgreSQL zu MariaDB migrieren](https://intosql.com/docs/migrations/postgresql-to-mariadb)

[Datentypen von PostgreSQL zu MariaDB](https://intosql.com/docs/types/postgresql-to-mariadb)

## Was sich von PostgreSQL zu MariaDB ändert

Jede Zeile ist eine Regel, die der Konverter anwendet, mit der Berichtszeile, die er schreibt, wenn die Regel etwas an deinen Daten ändert.

| In PostgreSQL | In MariaDB | Berichtszeile |
| --- | --- | --- |
| boolean | tinyint(1) |  |
| varchar(n), char(n), text | varchar(n) bis 1024 Zeichen, char(n) bis 255, darüber text |  |
| numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds | varchar | `decimal_as_text` |
| money | decimal(19,2) | `type_replaced` |
| interval | varchar(100) mit dem Text von PostgreSQL | `type_replaced` |
| arrays (integer[], text[]...) | JSON-Arrays | `type_replaced` |
| ranges, geometric types, tsvector, xml, hstore, composite and extension types | longtext mit dem Text von PostgreSQL | `type_replaced` |
| json, jsonb | json |  |
| timestamp | datetime(p) |  |
| timestamp with time zone | datetime(p) in UTC | `moments_as_utc` |
| time | time(p) |  |
| infinity, -infinity, BC dates and years past 9999 | NULL | `date_out_of_range` |
| NaN and Infinity in numeric, real and double precision | NULL | `invalid_value_null` |
| NOT NULL columns with values that become NULL | NOT NULL entfernt | `not_null_relaxed` |
| enum types | enum(...) mit denselben Labels |  |
| uuid, inet, cidr | uuid als uuid, inet und cidr als varchar(43) |  |
| bytea | blob, mediumblob oder longblob; varbinary(3072) in einem Schlüssel |  |
| bit(n) | bit(n) bis 64, darüber Text |  |
| citext and nondeterministic collations | exakter Vergleich | `case_insensitive_collation` |
| serial, identity | AUTO_INCREMENT, weiter nach der höchsten ID |  |
| a second serial or identity column in a table | normale Ganzzahl | `counter_dropped` |
| sequences not owned by a column | CREATE SEQUENCE, beim Wert, den sie als Nächstes vergibt |  |
| generated columns | generierte Spalten, STORED wie in der Quelle |  |
| generated columns with functions MariaDB lacks | eine normale Spalte | `generated_not_translated` |
| defaults with functions MariaDB lacks, and defaults from a sequence | kein Standardwert | `default_not_translated` |
| CHECK constraints | übersetzt, inline in CREATE TABLE |  |
| CHECK constraints with functions MariaDB lacks | nicht angelegt | `check_skipped` |
| CHECK ... NOT VALID | nicht angelegt | `check_not_valid` |
| gin, gist, brin and hash indexes, partial and expression indexes | nicht angelegt | `index_skipped` |
| foreign keys | Fremdschlüssel, geladen mit FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the dump doesn't create | nicht angelegt | `foreign_key_skipped` |
| partitioned tables | eine Tabelle mit den Zeilen aller Partitionen | `partitions_dropped` |
| schemas | eine Datenbank, jede Tabelle mit dem Namen ihres Schemas vorangestellt | `schemas_merged` |
| views, functions, procedures, triggers, rules, policies, extensions and types | im Bericht aufgeführt | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | Typen aus den Werten gelesen | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | longtext | `unknown_type` |
| text that isn't valid in its encoding | die fehlerhaften Bytes als Ersatzzeichen | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | unverändert kopiert | `mojibake_suspected` |

## Das Skript in MariaDB laden

Das Skript legt die Tabellen an, kopiert die Zeilen und fügt dann Schlüssel, Indizes und Fremdschlüssel hinzu, so lädt es schnell und hält beim ersten Fehler an.

```shell
mariadb --default-character-set=utf8mb4 mydb < postgresql.mariadb.sql
```

Fremdschlüssel werden so angelegt, wie der Dump sie deklariert, mit FOREIGN_KEY_CHECKS=0, während die Zeilen laden, wie bei mysqldump.

Führe bei einem großen Dump den Client auf dem Rechner des Servers aus und erhöhe max_allowed_packet, wenn eine einzelne Zeile sehr groß ist.

IntoSQL Pro lädt die Datei aus der Desktop-App oder der Kommandozeile direkt in MariaDB, ohne ein Skript zu schreiben.

## Den PostgreSQL-Dump für das beste Ergebnis erstellen

Der Konverter liest, was der Dump enthält. Mit diesen Optionen bleibt mehr von deinen Daten darin:

- --format=plain, die Standardeinstellung von pg_dump, schreibt SQL. Ein custom- oder directory-Archiv (-Fc, -Fd) wird mit pg_restore -f dump.sql zu SQL, ohne Datenbankserver.
- --no-owner --no-privileges lassen Rollen und Rechte weg, die der Konverter ohnehin überspringt, daher wird der Dump kleiner.
- pg_dumpall schreibt jede Datenbank in eine Datei; die Tabellen jeder Datenbank werden nach ihr benannt, damit nichts kollidiert.

## Was nicht konvertiert wird

Sichten, materialisierte Sichten, Funktionen, Prozeduren, Trigger, Regeln, Zeilensicherheitsrichtlinien, Erweiterungen und Typen sind in der eigenen Sprache von PostgreSQL geschrieben. Sie stehen mit Namen im Bericht und werden nie stillschweigend weggelassen, damit du sie für MariaDB neu schreiben kannst.

## Fragen zu PostgreSQL zu MariaDB

### Wird mein Dump hochgeladen?

Nein. Der Konverter läuft in deinem Browser und liest den Dump stückweise von deiner Festplatte, daher verlässt er nie deinen Computer. Die Desktop-App und die Kommandozeile konvertieren ebenfalls auf deinem Computer.

### Wie groß darf der Dump sein?

Der Konverter hält nie den ganzen Dump im Speicher: Er liest die Datei zweimal, in Abschnitten, und schreibt das Skript fortlaufend. Dumps von mehreren Gigabyte werden im Browser, in der Desktop-App und mit der Kommandozeile konvertiert.

### Liest es pg_dump -Fc-Archive?

Nicht direkt: Ein custom-Archiv ist ein Binärformat. pg_restore -f dump.sql dump.backup wandelt es in das einfache SQL um, das der Konverter liest, ohne Verbindung zu einem Server. Der Konverter sagt das, wenn er ein Archiv bekommt.

### Aus welchen PostgreSQL-Versionen kann der Dump stammen?

Dumps aus pg_dump und pg_dumpall ab PostgreSQL 10, mit COPY- oder INSERT-Zeilen. Jeder Test-Dump stammt aus PostgreSQL 13 und 18 und wird Zelle für Zelle mit seiner Quelle verglichen.

### Bleiben serial- und Identity-Werte erhalten?

Ja, für eine Spalte pro Tabelle: Die serial- oder Identity-Spalte am Anfang des Primärschlüssels wird AUTO_INCREMENT und macht nach der höchsten ID weiter. Sequenzen, die keiner Spalte gehören, werden MariaDB-Sequenzen bei dem Wert, den sie erreicht hatten.

### Was passiert mit Arrays, enums und anderen PostgreSQL-Typen?

Arrays werden JSON-Arrays, Booleans tinyint(1), enums ENUM mit denselben Labels, uuid UUID und money ein decimal. Ranges, geometrische Typen, hstore und zusammengesetzte Typen behalten den Text von PostgreSQL, und der Bericht nennt die Spalten.

### Was ist mit Funktionen, Triggern und Sichten?

Sie stehen mit Namen im Bericht und werden nicht konvertiert, weil jede Datenbank sie in ihrer eigenen Sprache schreibt.

### Auf welchen MariaDB-Versionen lädt das Skript?

MariaDB 10.11 und neuer. Jeder Test-Dump lädt auf 10.11 und 11.4 und hält beim ersten Fehler an, falls etwas schiefgeht.

## Aus PostgreSQL

- [PostgreSQL zu PostgreSQL](https://intosql.com/de/postgresql-in-postgresql)
- [PostgreSQL zu MySQL](https://intosql.com/de/postgresql-in-mysql)
- [PostgreSQL zu SQLite](https://intosql.com/de/postgresql-in-sqlite)
- [PostgreSQL zu SQL Server](https://intosql.com/de/postgresql-in-sql-server)
- [PostgreSQL zu Oracle](https://intosql.com/de/postgresql-in-oracle)

## Nach MariaDB

- [MySQL zu MariaDB](https://intosql.com/de/mysql-in-mariadb)
- [MariaDB zu MariaDB](https://intosql.com/de/mariadb-in-mariadb)
- [SQL Server zu MariaDB](https://intosql.com/de/sql-server-in-mariadb)
- [SQLite zu MariaDB](https://intosql.com/de/sqlite-in-mariadb)
- [Oracle zu MariaDB](https://intosql.com/de/oracle-in-mariadb)

## Leitfaden und alle Paare

- [MariaDB zu PostgreSQL](https://intosql.com/de/mariadb-in-postgresql)
- [Leitfaden: PostgreSQL zu MariaDB migrieren](https://intosql.com/docs/migrations/postgresql-to-mariadb)
- [Datentypen von PostgreSQL zu MariaDB](https://intosql.com/docs/types/postgresql-to-mariadb)
- [Alle Datenbankpaare](https://intosql.com/de/datenbankmigration)
