il file di input sembra essere un dump in formato testo. Si prega di utilizzare psql


95

Prendo backup utilizzando

pg_dump db_production > postgres_db.dump

e poi lo copio su localhost usando scp.

Ora quando importa sul mio db locale dà un errore

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

utilizzando la riga di comando

pg_restore -d db_development postgres_db.dump

Risposte:


138

Dalla pg_dumpdocumentazione:

Esempi

Per eseguire il dump di un database chiamato mydb in un file di script SQL :

$ pg_dump mydb > db.sql

Per ricaricare uno script di questo tipo in un database (appena creato) denominato newdb :

$ psql -d newdb -f db.sql

Per eseguire il dump di un database in un file di archivio in formato personalizzato:

$ pg_dump -Fc mydb > db.dump

Per eseguire il dump di un database in un archivio in formato directory:

$ pg_dump -Fd mydb -f dumpdir

Per ricaricare un file di archivio in un database (appena creato) denominato newdb:

$ pg_restore -d newdb db.dump

Dalla pg_restoredocumentazione:

Esempi

Supponiamo di aver scaricato un database chiamato mydb in un file di dump in formato personalizzato:

$ pg_dump -Fc mydb > db.dump

Per eliminare il database e ricrearlo dal dump:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

2
quando eseguo pg_restore ottengo pg_restore: il file di input [archiver] sembra essere un dump in formato testo. Si prega di utilizzare psql.
Haseeb Ahmad

Quale utilizzo per ripristinare il db?
Haseeb Ahmad

76
questo non risponde alla domanda
dopatraman

1
per un modo per ripristinare da un file di testo checkout serverfault.com/questions/260607/…
chrs

7
IMO questo post ha un po 'troppi dettagli che offuscano la risposta. Quello che l'autore non ha fatto notare è che la documentazione di pg_dump per il parametro '-F' non dice che il formato predefinito ('p' / 'plain') è adatto per pg_restore. pg_restore richiede che pg_dump venga utilizzato con i formati "c", "d" o "t".
Matt

63

La risposta sopra non ha funzionato per me, ha funzionato:

psql db_development < postgres_db.dump


Breve e dolce. Ha funzionato anche per me.
Allievo

14

Per me quando provo a ripristinare dall'host remoto che ho usato

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

ha funzionato bene. E se non il telecomando ha funzionato solo seguendo il comando.

psql -d database < db.dump

9

Per creare un backup pg_dumpche sia compatibile con pg_restoreè necessario utilizzare --format=custom/ -Fcdurante la creazione del dump.

Dai documenti:

Produce un archivio in formato personalizzato adatto per l'input in pg_restore.

Quindi il tuo pg_dumpcomando potrebbe assomigliare a:

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

E il tuo pg_restorecomando:

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

6

Per me funziona come questo. C: \ Programmi \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql


2
Risposta semplice e utile!
Rax Weber

1
Grazie @RAJNISH YADAV.
Amit

1

se usi pg_dump con -Fp per eseguire il backup in formato testo normale, usa il seguente comando:

cat db.txt | psql dbname

per copiare tutti i dati nel database con il nome dbname


0

Se hai un dump DB completo:

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

Se hai schemi tenuti separatamente, tuttavia, non funzionerà. Quindi dovrai disabilitare i trigger per l'inserimento dei dati, simile a pg_restore --disable-triggers. Puoi quindi usare questo:

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

In una nota a margine, è uno svantaggio molto sfortunato di postgres, penso. Il modo predefinito per creare un dump in non pg_dumpè compatibile con pg_restore. Con alcune chiavi aggiuntive, tuttavia, lo è. WTF?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.