web-dev-qa-db-fra.com

Comment créer une sauvegarde d'une seule table dans une base de données postgres?

Est-il possible de créer une sauvegarde d'une table unique dans une base de données à l'aide de postgres? Et comment? Est-ce que cela fonctionne aussi avec la commande pg_dump?

125
Roland

Utilisez --table pour indiquer à pg_dump la table à sauvegarder:

pg_dump --Host localhost --port 5432 --username postgres --format plain --ignore-version --verbose --file "<abstract_file_path>" --table public.tablename dbname
172
Frank Heikens

Si vous êtes sur Ubuntu,

  1. Connectez-vous à votre utilisateur postgres Sudo su postgres
  2. pg_dump -d <database_name> -t <table_name> > file.sql

Assurez-vous que vous exécutez la commande où l'utilisateur postgres dispose d'autorisations en écriture (Exemple: /tmp).

Éditer

Si vous souhaitez vider le fichier .sql sur un autre ordinateur, vous devrez peut-être envisager de ne pas enregistrer les informations sur le propriétaire dans le fichier .sql.

Vous pouvez utiliser pg_dump --no-owner -d <database_name> -t <table_name> > file.sql

67
Sri Harsha Kappala

pg_dump -h localhost -p 5432 -U postgres -d mydb -t ma_table> backup.sql

Vous pouvez effectuer la sauvegarde d'une table unique, mais je vous suggère de prendre la sauvegarde de la base de données complète, puis de restaurer la table dont vous avez besoin. Il est toujours bon d'avoir une sauvegarde de la base de données entière.

9 façons d'utiliser pg_dump

31
Prashant Kumar

Si vous préférez une interface utilisateur graphique, vous pouvez utiliser pgAdmin III (Linux/Windows/OS X). Il suffit de cliquer avec le bouton droit sur la table de votre choix, puis de "sauvegarder". Il créera une commande pg_dump pour vous.

enter image description here

enter image description here

enter image description here

10
Franck Dernoncourt

En complément de la réponse de Frank Heiken, si vous souhaitez utiliser les instructions INSERT au lieu de copy from stdin, vous devez spécifier le drapeau --inserts.

pg_dump --Host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname

Notez que j'ai oublié l'indicateur --ignore-version, car il est obsolète.

0
user3207874