El archivo de entrada parece ser un volcado de formato de texto. Utilice psql

90

Tomo respaldo usando

pg_dump db_production > postgres_db.dump

y luego lo copio en localhost usando scp.

Ahora, cuando importo en mi base de datos local, aparece un error

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

usando la línea de comando

pg_restore -d db_development postgres_db.dump
Haseeb Ahmad
fuente

Respuestas:

133

De la pg_dumpdocumentación:

Ejemplos

Para volcar una base de datos llamada mydb en un archivo de script SQL :

$ pg_dump mydb > db.sql

Para volver a cargar dicho script en una base de datos (recién creada) llamada newdb :

$ psql -d newdb -f db.sql

Para volcar una base de datos en un archivo de formato personalizado:

$ pg_dump -Fc mydb > db.dump

Para volcar una base de datos en un archivo con formato de directorio:

$ pg_dump -Fd mydb -f dumpdir

Para volver a cargar un archivo de almacenamiento en una base de datos (recién creada) llamada newdb:

$ pg_restore -d newdb db.dump

De la pg_restoredocumentación:

Ejemplos

Supongamos que hemos volcado una base de datos llamada mydb en un archivo de volcado de formato personalizado:

$ pg_dump -Fc mydb > db.dump

Para eliminar la base de datos y volver a crearla desde el volcado:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump
Зелёный
fuente
2
cuando hago pg_restore obtengo pg_restore: el archivo de entrada [archivador] parece ser un volcado de formato de texto. Utilice psql.
Haseeb Ahmad
¿Cuál uso para restaurar db?
Haseeb Ahmad
66
esto no responde a la pregunta
dopatraman
1
para una forma de restaurar desde un archivo de texto, consulte serverfault.com/questions/260607/…
chrs
5
En mi opinión, esta publicación tiene demasiados detalles que confunden la respuesta. Lo que el autor no señaló es que la documentación de pg_dump para el parámetro '-F' no dice que el formato predeterminado ('p' / 'plain') sea adecuado para pg_restore. pg_restore requiere que pg_dump se use con los formatos 'c', 'd' o 't'.
Matt
59

La respuesta anterior no funcionó para mí, esto funcionó:

psql db_development < postgres_db.dump

Uziel Valdez
fuente
Corto y dulce. También funcionó para mí.
Alumno
11

Para mí, cuando intento restaurar desde un host remoto que utilicé

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

funcionó bien. Y si no funcionaba el comando de seguimiento remoto.

psql -d database < db.dump
Tserenjamts
fuente
7

Para crear una copia de seguridad pg_dumpque sea compatible con pg_restore, debe usar --format=custom/ -Fcal crear su volcado.

De los documentos:

Genere un archivo de formato personalizado adecuado para ingresar en pg_restore.

Entonces su pg_dumpcomando podría verse así:

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

Y tu pg_restorecomando:

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

Para mí, está funcionando como este. C: \ Archivos de programa \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql

RAJNISH YADAV
fuente
2
¡Respuesta simple y útil!
Rax Weber
1
Gracias @RAJNISH YADAV.
Amit
0

si usa pg_dump con -Fp para hacer una copia de seguridad en formato de texto sin formato, use el siguiente comando:

cat db.txt | psql dbname

para copiar todos los datos a su base de datos con el nombre dbname

M2E67
fuente
0

Si tiene un volcado de base de datos completo:

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

Sin embargo, si mantiene los esquemas por separado, eso no funcionará. Luego, deberá deshabilitar los activadores para la inserción de datos, similar a pg_restore --disable-triggers. Luego puedes usar esto:

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

En una nota al margen, creo que es una desventaja muy desafortunada de postgres. La forma predeterminada de crear un volcado pg_dumpes incompatible con pg_restore. Sin embargo, con algunas claves adicionales, lo es. WTF?

VasiliNovikov
fuente