Réponses:
Utilisez --table
pour indiquer pg_dump
quelle table il doit sauvegarder:
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename dbname
psql -U username -d database -1 -f your_dump.sql
--ignore-version
. La réponse de Prashant Kumar, qui est plus simple, a fonctionné pour moi.
Si vous êtes sur Ubuntu,
sudo su postgres
pg_dump -d <database_name> -t <table_name> > file.sql
Assurez - vous que vous exécutez la commande où l' postgres
utilisateur dispose des autorisations d'écriture (exemple: /tmp
)
Éditer
Si vous souhaitez vider le fichier .sql sur un autre ordinateur, vous devrez peut-être envisager d'ignorer les informations du propriétaire enregistrées dans le fichier .sql.
Vous pouvez utiliser pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
pg_dump -d <database_name> > file.sql
pg_dump -t <table_name> <database_name> > file.sql
pg_dump -h localhost -p 5432 -U postgres -d mydb -t ma_table> backup.sql
Vous pouvez prendre la sauvegarde d'une seule table, mais je suggérerais de prendre la sauvegarde de toute la base de données, 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.
max(id)
sur ma table. c'est la réponse qui a fonctionné et je suis convaincu, en regardant le sql généré, que j'aurais pu le restaurer.
Si vous préférez une interface utilisateur graphique, vous pouvez utiliser pgAdmin III (Linux / Windows / OS X). Faites simplement un clic droit sur la table de votre choix, puis «sauvegarde». Cela créera une pg_dump
commande pour vous.
En plus de la réponse de Frank Heiken, si vous souhaitez utiliser des INSERT
déclarations à la place de copy from stdin
, vous devez spécifier le --inserts
drapeau
pg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
Notez que j'ai omis le --ignore-version
drapeau, car il est obsolète.
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"
mais il est sorti:pg_restore: [tar archiver] corrupt tar header found in --