Pregunta

Estoy usando PostgreSQL 9.1 y quiero restaurar los archivos de respaldo 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 eliminando 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 con 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?

¿Fue útil?

Solución

Estas restaurando con pg_restore --format=c ... pero el pg_dump no había terminado con --format=c, se hizo con el valor predeterminado, plano formato.

De pg_dump página de manual:

  -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 al psql herramienta de línea de comandos, pg_restore No sabe qué es, cuál es el motivo de este mensaje de error: no encontré la cadena mágica en el encabezado del archivo.

Puede mirar directamente el archivo de volcado con more out.sql en Shell y verá comandos SQL legibles.restaurarlo con psql -f out.sql [other options].Probablemente querrás crear primero la base de datos de destino, ya que --create La opción no está presente en el pg_dump invocación.

Por otro lado, puedes reinvocar el volcado agregando --format=c a sus opciones.Entonces eso sería lo contrario: pg_restore debe usarse para interpretar un archivo de volcado en el formato personalizado.

Otros consejos

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

Si usa GIT-LFS, asegúrese de tener el archivo real, no el puntero!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top