---
title: "PostgreSQL-Dump auf eine andere Version bringen"
description: "Konvertiere eine pg_dump-Datei aus PostgreSQL ab 10 in ein Skript, das auf PostgreSQL 13 bis 18 lädt, mit denselben Tabellen, Schlüsseln und Daten, plus Bericht."
canonical: https://intosql.com/de/postgresql-in-postgresql
last_updated: 2026-10-15
---

# PostgreSQL-Dump auf eine andere Version bringen

Zieh einen Klartext-Dump aus pg_dump oder pg_dumpall als .sql oder .sql.gz hierher und lade ein Skript herunter, das auf PostgreSQL 13 bis 18 lädt, egal welche Version den Dump geschrieben hat. Identities, Enums, Arrays und jsonb bleiben, wie sie sind, Typen aus einer Extension werden zu Text, und jede Änderung steht im Bericht.

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

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

## Was sich zwischen Datei und Skript ä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 der Datei | Im Skript | Berichtszeile |
| --- | --- | --- |
| varchar(n), char(n), text | dieselben Typen |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | dieselben Typen und Werte |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | dieselben enum-Typen, vor den Tabellen angelegt |  |
| enum columns holding values outside their labels | text ohne CHECK | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text mit dem Text von PostgreSQL | `type_replaced` |
| citext | text, exakt verglichen | `case_insensitive_collation` |
| json, jsonb | dieselben Typen |  |
| timestamp with time zone | timestamptz, dieselben Zeitpunkte |  |
| time, time with time zone | dieselben Typen |  |
| infinity, -infinity and BC dates | beibehalten |  |
| NaN and Infinity in numeric, real and double precision | beibehalten |  |
| generated columns | dieselben generierten Spalten |  |
| generated columns with functions IntoSQL doesn't write | eine normale Spalte mit den Werten | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | kein Standardwert | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | nicht angelegt | `check_skipped` |
| CHECK ... NOT VALID | nach den Zeilen als NOT VALID hinzugefügt |  |
| gin, gist, brin and hash indexes, partial and expression indexes | nicht angelegt | `index_skipped` |
| foreign keys to tables the dump doesn't create | nicht angelegt | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL entfernt | `not_null_relaxed` |
| partitioned tables | eine Tabelle mit den Zeilen aller Partitionen | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | 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 | text | `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 PostgreSQL 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
psql -v ON_ERROR_STOP=1 -d mydb -f postgresql.postgresql.sql
```

Fremdschlüssel werden als NOT VALID hinzugefügt und dann validiert. Verweist eine Zeile auf eine Zeile, die es nicht gibt, nennt dir das Skript den betroffenen Fremdschlüssel, statt auf halbem Weg abzubrechen.

Lege bei einem großen Dump zuerst die Datenbank an und führe das Skript mit psql auf dem Rechner aus, auf dem der Server läuft.

IntoSQL Pro lädt die Datei aus der Desktop-App oder der Kommandozeile direkt in PostgreSQL, 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

Views, Trigger, Prozeduren, Funktionen und andere Objekte in der eigenen Sprache von PostgreSQL stehen mit Namen im Bericht und werden nie stillschweigend entfernt, damit du jedes vor dem Neuanlegen mit der PostgreSQL-Version abgleichen kannst, in die du lädst.

## Fragen zum Wechsel von PostgreSQL zwischen Versionen

### 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. serial- und Identity-Spalten bleiben Identity-Spalten, jede Zeile behält ihre ID, und jeder Zähler macht bei dem Wert weiter, den die Sequenz des Dumps erreicht hatte.

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

Sie bleiben, wie sie sind: Arrays, Ranges, json und jsonb, Bitstrings, außer money. enum-Typen werden mit ihren Labels neu angelegt. Typen aus Erweiterungen (citext, hstore, PostGIS) und zusammengesetzte Typen werden text, und der Bericht nennt die Spalten.

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

Sie stehen mit Namen im Bericht und werden nicht konvertiert, damit du sie neu anlegen kannst, sobald die Tabellen da sind. NOT VALID-CHECK-Bedingungen werden nach den Zeilen hinzugefügt, weiterhin nicht validiert.

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

PostgreSQL 13 bis 18, egal welche Version den Dump geschrieben hat. Dasselbe Skript lädt auf jeder davon und hält beim ersten Fehler an, falls etwas schiefgeht.

## Aus PostgreSQL

- [PostgreSQL zu MySQL](https://intosql.com/de/postgresql-in-mysql)
- [PostgreSQL zu MariaDB](https://intosql.com/de/postgresql-in-mariadb)
- [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 PostgreSQL

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

## Leitfaden und alle Paare

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