pg_restore: [archiver] no encontró una cadena mágica en el encabezado del archivo

13

Estoy usando PostgreSQL 9.1 y quiero restaurar los archivos de copia de seguridad generados con pg_dump:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

Este comando genera un archivo sql válido que comienza con la eliminación de cualquier objeto de base de datos existente, luego genera todas las tablas, índices, secuencias, etc. y finalmente inserta datos.

Cuando intento restaurar el archivo de copia de seguridad generado con: (saltos de línea agregados solo para fines de visualización)

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

falla e imprime:

pg_restore: [archiver] did not find magic string in file header

¿Cuál es la razón para eso?

maja
fuente

Respuestas:

19

Está restaurando pg_restore --format=c ...pero pg_dumpno se hizo con --format=c, se hizo con el formato plano predeterminado .

Desde la página de pg_dumpmanual:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

Un volcado en formato plano debe enviarse directamente a la psqlherramienta de línea de comandos, pg_restoreno sabe de qué se trata, razón por la cual aparece este mensaje de error: no se encontró una cadena mágica en el encabezado del archivo .

Puede mirar directamente el archivo de volcado con more out.sqlshell y verá comandos SQL legibles. Restaurar con psql -f out.sql [other options]. Probablemente desee crear primero la base de datos de destino, ya que la --createopción no está presente en la pg_dumpinvocación.

Por otro lado, puede volver a invocar el volcado agregando --format=ca sus opciones. Entonces eso sería lo contrario: pg_restoredebe usarse para interpretar un archivo de volcado en el formato personalizado.

Daniel Vérité
fuente
0

Un posible problema es que su archivo de datos está truncado. Compruebe si está descargando el archivo completo comparando los tamaños de archivo.

Sterling Cobb
fuente
0

Si usa git-lfs, asegúrese de tener el archivo real, ¡no el puntero!

mehmet
fuente