Le fichier d'entrée semble être un vidage au format texte. Veuillez utiliser psql


90

Je prends une sauvegarde en utilisant

pg_dump db_production > postgres_db.dump

puis je le copie sur localhost en utilisant scp.

Maintenant, lorsque j'importe sur ma base de données locale, cela donne une erreur

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

en utilisant la ligne de virgule

pg_restore -d db_development postgres_db.dump

Réponses:


133

De la pg_dumpdocumentation:

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_restoredocumentation:

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

2
quand je fais pg_restore, j'obtiens pg_restore: le fichier d'entrée [archiveur] semble être un vidage de format texte. Veuillez utiliser psql.
Haseeb Ahmad

Lequel j'utilise pour restaurer la base de données?
Haseeb Ahmad

66
cela ne répond pas à la question
dopatraman

1
pour un moyen de restaurer à partir d'un fichier texte checkout serverfault.com/questions/260607/…
chrs

5
IMO, ce post a un peu trop de détails qui obscurcit la réponse. Ce que l'auteur n'a pas fait remarquer, c'est que la documentation pg_dump pour le paramètre '-F' ne dit pas que le format par défaut ('p' / 'plain') convient à pg_restore. pg_restore nécessite que pg_dump soit utilisé avec les formats «c», «d» ou «t».
Matt

59

La réponse ci-dessus n'a pas fonctionné pour moi, cela a fonctionné:

psql db_development < postgres_db.dump


Court et doux. A travaillé pour moi aussi.
Élève du

11

Pour moi, lorsque j'essaie de restaurer à partir de l'hôte distant que j'ai utilisé

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

a bien fonctionné. Et si ce n'est pas à distance, la commande suivante a fonctionné.

psql -d database < db.dump

7

Pour créer une sauvegarde en utilisant pg_dumpqui est compatible avec, pg_restorevous devez utiliser le --format=custom/ -Fclors de la création de votre vidage.

À partir de la documentation:

Sortez une archive au format personnalisé qui peut être entrée dans pg_restore.

Ainsi, votre pg_dumpcommande pourrait ressembler à:

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

Et votre pg_restorecommande:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump

6

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


2
Réponse simple et utile!
Rax Weber

1
Merci @RAJNISH YADAV.
Amit le

0

si vous utilisez pg_dump avec -Fp pour sauvegarder au format texte brut, utilisez la commande suivante:

cat db.txt | psql dbname

pour copier toutes les données dans votre base de données avec le nom dbname


0

Si vous disposez d'un vidage de base de données complet:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

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_dumpest incompatible avec pg_restore. Avec quelques clés supplémentaires, cependant, c'est le cas. WTF?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.