Existe-t-il un moyen de créer une sauvegarde d'une seule table dans une base de données à l'aide de postgres? Et comment? Cela fonctionne-t-il également avec la commande pg_dump?
postgresql
backup
pg-dump
Elitmiar
la source
la source
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 --
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
la source
pg_dump -d <database_name> > file.sql
pg_dump -t <table_name> <database_name> > file.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.
9 façons d'utiliser pg_dump
la source
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.la source
En plus de la réponse de Frank Heiken, si vous souhaitez utiliser des
INSERT
déclarations à la place decopy from stdin
, vous devez spécifier le--inserts
drapeaupg_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.la source