De la pg_dump
documentation:
Exemples
Pour vider une base de données appelée mydb dans un fichier de script SQL :
$ pg_dump mydb > db.sql
Pour recharger un tel script dans une base de données (nouvellement créée) nommée newdb :
$ psql -d newdb -f db.sql
Pour vider une base de données dans un fichier d'archive au format personnalisé:
$ pg_dump -Fc mydb > db.dump
Pour vider une base de données dans une archive au format répertoire:
$ pg_dump -Fd mydb -f dumpdir
Pour recharger un fichier archive dans une base de données (fraîchement créée) nommée newdb:
$ pg_restore -d newdb db.dump
De la pg_restore
documentation:
Exemples
Supposons que nous ayons vidé une base de données appelée mydb dans un fichier de vidage au format personnalisé:
$ pg_dump -Fc mydb > db.dump
Pour supprimer la base de données et la recréer à partir du vidage:
$ dropdb mydb
$ pg_restore -C -d postgres db.dump
La réponse ci-dessus n'a pas fonctionné pour moi, cela a fonctionné:
psql db_development < postgres_db.dump
la source
Pour moi, lorsque j'essaie de restaurer à partir de l'hôte distant que j'ai utilisé
a bien fonctionné. Et si ce n'est pas à distance, la commande suivante a fonctionné.
la source
Pour créer une sauvegarde en utilisant
pg_dump
qui est compatible avec,pg_restore
vous devez utiliser le--format=custom
/-Fc
lors de la création de votre vidage.À partir de la documentation:
Ainsi, votre
pg_dump
commande pourrait ressembler à:Et votre
pg_restore
commande:la source
Pour moi, ça marche comme celui-ci. C: \ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql
la source
si vous utilisez pg_dump avec -Fp pour sauvegarder au format texte brut, utilisez la commande suivante:
pour copier toutes les données dans votre base de données avec le nom dbname
la source
Si vous disposez d'un vidage de base de données complet:
Si vous avez des schémas conservés séparément, cela ne fonctionnera pas. Ensuite, vous devrez désactiver les déclencheurs pour l'insertion de données, comme
pg_restore --disable-triggers
. Vous pouvez ensuite utiliser ceci:cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin
Sur une note secondaire, c'est un inconvénient très malheureux de postgres, je pense. La méthode par défaut de création d'un vidage dans
pg_dump
est incompatible avecpg_restore
. Avec quelques clés supplémentaires, cependant, c'est le cas. WTF?la source