---
title: "Een PostgreSQL-dump naar een andere versie"
description: "Zet een pg_dump-bestand van PostgreSQL 10 of later om naar een script dat laadt op PostgreSQL 13 tot en met 18, met dezelfde tabellen, sleutels en data, en een rapport."
canonical: https://intosql.com/nl/postgresql-naar-postgresql
last_updated: 2026-10-15
---

# Een PostgreSQL-dump naar een andere versie

Sleep een gewone dump van pg_dump of pg_dumpall, als .sql of .sql.gz, hierheen en download één script dat laadt op PostgreSQL 13 tot en met 18, welke versie de dump ook schreef. Identities, enums, arrays en jsonb blijven zoals ze zijn, typen van een extensie worden text, en elke wijziging staat in het rapport.

[Migratiehandleiding PostgreSQL naar PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[Datatypen van PostgreSQL naar PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)

## Wat er verandert tussen het bestand en het script

Elke rij is een regel die de converter toepast, met de rapportregel die hij schrijft als de regel iets in je data verandert.

| In het bestand | In het script | Rapportregel |
| --- | --- | --- |
| varchar(n), char(n), text | dezelfde typen |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | dezelfde typen en waarden |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | dezelfde enum-typen, aangemaakt vóór de tabellen |  |
| enum columns holding values outside their labels | text zonder check | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text met de tekst van PostgreSQL | `type_replaced` |
| citext | text, exact vergeleken | `case_insensitive_collation` |
| json, jsonb | dezelfde typen |  |
| timestamp with time zone | timestamptz, dezelfde momenten |  |
| time, time with time zone | dezelfde typen |  |
| infinity, -infinity and BC dates | behouden |  |
| NaN and Infinity in numeric, real and double precision | behouden |  |
| generated columns | dezelfde gegenereerde kolommen |  |
| generated columns with functions IntoSQL doesn't write | een gewone kolom met de waarden | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | geen standaardwaarde | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | niet aangemaakt | `check_skipped` |
| CHECK ... NOT VALID | na de rijen toegevoegd als NOT VALID |  |
| gin, gist, brin and hash indexes, partial and expression indexes | niet aangemaakt | `index_skipped` |
| foreign keys to tables the dump doesn't create | niet aangemaakt | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| partitioned tables | één tabel met de rijen van elke partitie | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | vermeld in het rapport | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | typen afgeleid uit de waarden | `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 | de foute bytes als het vervangingsteken | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | ongewijzigd gekopieerd | `mojibake_suspected` |

## Het script in PostgreSQL laden

Het script maakt de tabellen aan, kopieert de rijen en voegt daarna sleutels, indexen en refererende sleutels toe, zodat het snel laadt en bij de eerste fout stopt.

```shell
psql -v ON_ERROR_STOP=1 -d mydb -f postgresql.postgresql.sql
```

Refererende sleutels worden toegevoegd als NOT VALID en daarna gevalideerd. Verwijst een rij naar een rij die niet bestaat, dan vertelt het script je welke constraint het is, in plaats van halverwege te mislukken.

Maak voor een grote dump eerst de database aan en voer het script uit met psql vanaf dezelfde machine als de server.

IntoSQL Pro laadt het bestand rechtstreeks in PostgreSQL vanuit de desktopapp of de opdrachtregel, zonder een script te schrijven.

## Een dump van PostgreSQL maken voor het beste resultaat

De converter leest wat de dump bevat. Met deze opties blijft er meer van je data in staan:

- --format=plain, de standaard van pg_dump, schrijft SQL. Een custom- of directoryarchief (-Fc, -Fd) wordt SQL met pg_restore -f dump.sql, zonder databaseserver.
- --no-owner --no-privileges laten rollen en rechten weg, die de converter toch overslaat, dus de dump wordt kleiner.
- pg_dumpall zet elke database in één bestand; de tabellen van elke database krijgen de naam ervan, dus niets botst.

## Wat niet wordt geconverteerd

Weergaven, triggers, procedures, functies en andere objecten in de eigen taal van PostgreSQL staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je elk ervan kunt controleren tegen de PostgreSQL-versie waarin je laadt voordat je het opnieuw aanmaakt.

## Vragen over PostgreSQL verhuizen tussen versies

### Wordt mijn dump geüpload?

Nee. De converter draait in je browser en leest de dump in delen van je schijf, dus hij verlaat je computer nooit. De desktopapp en de opdrachtregel converteren ook op je computer.

### Hoe groot mag de dump zijn?

De converter houdt nooit de hele dump in het geheugen: hij leest het bestand twee keer, in bereiken, en schrijft het script gaandeweg. Dumps van meerdere gigabytes worden geconverteerd in de browser, in de desktopapp en met de opdrachtregel.

### Leest het pg_dump -Fc-archieven?

Niet direct: een custom-archief is een binair formaat. pg_restore -f dump.sql dump.backup zet het om naar de gewone SQL die de converter leest, zonder verbinding met een server. De converter meldt dat als hij een archief krijgt.

### Van welke PostgreSQL-versies kan de dump komen?

Dumps geschreven door pg_dump en pg_dumpall vanaf PostgreSQL 10, met rijen als COPY of INSERT. Elke testdump komt van PostgreSQL 13 en 18 en wordt cel voor cel met zijn bron vergeleken.

### Blijven serial- en identity-waarden behouden?

Ja. Serial- en identity-kolommen blijven identity-kolommen, elke rij behoudt zijn id, en elke teller gaat verder vanaf de waarde die de sequence in de dump had bereikt.

### Wat gebeurt er met arrays, enums en andere PostgreSQL-typen?

Arrays, ranges, json en jsonb en bitstrings blijven zoals ze zijn, money niet. Enum-typen worden opnieuw aangemaakt met hun labels. Typen van een extensie (citext, hstore, PostGIS) en samengestelde typen worden text, en het rapport zegt welke kolommen.

### En functies, triggers en weergaven?

Ze staan op naam in het rapport en worden niet geconverteerd, zodat je ze opnieuw kunt maken zodra de tabellen er zijn. NOT VALID-checks worden na de rijen toegevoegd, nog steeds niet gevalideerd.

### Op welke PostgreSQL-versies laadt het script?

PostgreSQL 13 tot en met 18, welke versie de dump ook schreef. Hetzelfde script laadt op elk ervan en stopt bij de eerste fout als er iets misgaat.

## Vanuit PostgreSQL

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

## Naar PostgreSQL

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

## Handleiding en elke combinatie

- [Migratiehandleiding PostgreSQL naar PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [Datatypen van PostgreSQL naar PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)
- [Elke databasecombinatie](https://intosql.com/nl/databasemigratie)
