---
title: "Passer un dump PostgreSQL à une autre version"
description: "Convertissez un fichier pg_dump de PostgreSQL 10 ou plus en script qui se charge sur PostgreSQL 13 à 18, avec les mêmes tables, clés et données, et un rapport."
canonical: https://intosql.com/fr/postgresql-en-postgresql
last_updated: 2026-10-15
---

# Passer un dump PostgreSQL à une autre version

Déposez un dump texte de pg_dump ou pg_dumpall, en .sql ou .sql.gz, et téléchargez un script qui se charge sur PostgreSQL 13 à 18, quelle que soit la version qui a écrit le dump. Identités, enums, tableaux et jsonb restent tels quels, les types apportés par une extension deviennent du texte, et chaque changement figure dans le rapport.

[Guide de migration de PostgreSQL vers PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[Types de données de PostgreSQL vers PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)

## Ce qui change entre le fichier et le script

Chaque ligne est une règle appliquée par le convertisseur, avec la ligne de rapport qu'il écrit quand la règle change quelque chose dans vos données.

| Dans le fichier | Dans le script | Ligne du rapport |
| --- | --- | --- |
| varchar(n), char(n), text | les mêmes types |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | les mêmes types et valeurs |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | les mêmes types enum, créés avant les tables |  |
| enum columns holding values outside their labels | text sans CHECK | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text avec le texte de PostgreSQL | `type_replaced` |
| citext | text, comparé exactement | `case_insensitive_collation` |
| json, jsonb | les mêmes types |  |
| timestamp with time zone | timestamptz, les mêmes instants |  |
| time, time with time zone | les mêmes types |  |
| infinity, -infinity and BC dates | conservées |  |
| NaN and Infinity in numeric, real and double precision | conservées |  |
| generated columns | les mêmes colonnes générées |  |
| generated columns with functions IntoSQL doesn't write | une colonne simple avec les valeurs | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | aucune valeur par défaut | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | non créée | `check_skipped` |
| CHECK ... NOT VALID | ajoutée NOT VALID après les lignes |  |
| gin, gist, brin and hash indexes, partial and expression indexes | non créé | `index_skipped` |
| foreign keys to tables the dump doesn't create | non créée | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL retiré | `not_null_relaxed` |
| partitioned tables | une seule table avec les lignes de chaque partition | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | listés dans le rapport | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | types déduits des valeurs | `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 | les octets invalides deviennent le caractère de remplacement | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copié tel quel | `mojibake_suspected` |

## Charger le script dans PostgreSQL

Le script crée les tables, copie les lignes, puis ajoute les clés, les index et les clés étrangères ; il se charge donc vite et s'arrête à la première erreur.

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

Les clés étrangères sont ajoutées en NOT VALID, puis validées. Si une ligne pointe vers une ligne qui n'existe pas, le script vous indique quelle contrainte, au lieu d'échouer à mi-chemin.

Pour un gros dump, créez d'abord la base de données et exécutez le script avec psql depuis la machine du serveur.

IntoSQL Pro charge le fichier directement dans PostgreSQL depuis l'application de bureau ou la ligne de commande, sans écrire de script.

## Faire le dump PostgreSQL pour un meilleur résultat

Le convertisseur lit ce que contient le dump. Ces options y gardent davantage de vos données :

- --format=plain, le format par défaut de pg_dump, écrit du SQL. Une archive custom ou directory (-Fc, -Fd) devient du SQL avec pg_restore -f dump.sql, sans serveur de base de données.
- --no-owner --no-privileges omettent les rôles et les droits, que le convertisseur ignore de toute façon ; le dump est donc plus petit.
- pg_dumpall met toutes les bases de données dans un seul fichier ; les tables de chacune sont préfixées par son nom, donc rien n'entre en collision.

## Ce qui n'est pas converti

Les vues, triggers, procédures, fonctions et autres objets écrits dans le propre langage de PostgreSQL sont listés par nom dans le rapport, jamais supprimés en silence, pour que vous vérifiiez chacun face à la version de PostgreSQL cible avant de le recréer.

## Questions sur le passage de PostgreSQL d'une version à l'autre

### Mon dump est-il envoyé ?

Non. Le convertisseur s'exécute dans votre navigateur et lit le dump depuis votre disque par morceaux ; il ne quitte donc jamais votre ordinateur. L'application de bureau et la ligne de commande convertissent aussi sur votre ordinateur.

### Quelle taille peut avoir le dump ?

Le convertisseur ne garde jamais tout le dump en mémoire : il lit le fichier deux fois, par plages, et écrit le script au fur et à mesure. Les dumps de plusieurs gigaoctets se convertissent dans le navigateur, dans l'application de bureau et avec la ligne de commande.

### Lit-il les archives pg_dump -Fc ?

Pas directement : une archive custom est un format binaire. pg_restore -f dump.sql dump.backup la transforme en SQL texte que le convertisseur lit, sans se connecter à un serveur. Le convertisseur le signale quand il reçoit une archive.

### De quelles versions de PostgreSQL le dump peut-il venir ?

Les dumps écrits par pg_dump et pg_dumpall depuis PostgreSQL 10, avec des lignes COPY ou INSERT. Chaque dump de test vient de PostgreSQL 13 et 18 et est comparé à sa source cellule par cellule.

### Les valeurs serial et identity sont-elles conservées ?

Oui. Les colonnes serial et identity restent des colonnes d'identité, chaque ligne garde son identifiant, et chaque compteur reprend à la valeur qu'avait atteinte la séquence du dump.

### Que deviennent les tableaux, les enums et les autres types PostgreSQL ?

Ils restent tels quels : tableaux, plages, json et jsonb, chaînes de bits, sauf money. Les types enum sont recréés avec leurs libellés. Les types apportés par une extension (citext, hstore, PostGIS) et les types composites deviennent text, et le rapport indique quelles colonnes.

### Et les fonctions, les déclencheurs et les vues ?

Ils sont listés par nom dans le rapport et ne sont pas convertis, pour que vous puissiez les recréer une fois les tables chargées. Les contraintes CHECK NOT VALID sont ajoutées après les lignes, toujours non validées.

### Sur quelles versions de PostgreSQL le script se charge-t-il ?

PostgreSQL 13 à 18, quelle que soit la version qui a écrit le dump. Le même script se charge sur chacune, et s'arrête à la première erreur en cas de problème.

## Depuis PostgreSQL

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

## Vers PostgreSQL

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

## Guide et toutes les paires

- [Guide de migration de PostgreSQL vers PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [Types de données de PostgreSQL vers PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)
- [Toutes les paires de bases de données](https://intosql.com/fr/migration-de-base-de-donnees)
