Utilicé pg_dump en una máquina y copié el archivo de resultados en otra, donde intenté restaurarlo. Creo que el esquema es el mismo. Sin embargo, me sale:
pg_restore: [archiver] input file does not appear to be a valid archive
He realizado las siguientes operaciones:
pg_dump -a -f db.txt dbname
y:
pg_restore -a -d dbname db.txt
¿Qué puede estar mal?
postgresql
gruszczy
fuente
fuente
Respuestas:
Está volcando en formato sql simple que fue diseñado para alimentar a psql. Esto no es reconocido por pg_restore.
debería hacer el truco
fuente
psql dbname < db.txt
;)pg_dump
por defecto crea los comandos sql necesarios para recrear los datos. Para recuperarlo, solo necesita invocarpsql
(nopg_restore
) con el archivo como entrada.pg_restore
solo se debe utilizar para el formato binario (no predeterminado y menos habitualno recomendado) depg_dump
. Lee los documentos .Actualización:
pg_dump
los formatos binarios (-Fc
-Ft
) que se utilizaránpg_restore
están bien y ofrecen cierta flexibilidad adicional. Pero son menos estándar (no SQL), menos aptos para importar desde algunas herramientas (por ejemplo, una interfaz php) o manipularse con un editor de texto, y un poco menos portátiles para otras versiones e incluso otras bases de datos. Para las copias de seguridad, me quedaría con el formato plano predeterminado. Para otros escenarios, la opción binary + pg_restore puede ser igual o más adecuada.El punto a tener en cuenta es que en Postgresql, en el escenario típico , la copia de seguridad normalmente se realiza mediante pg_dump (plain) y la restauración con el cliente de línea de comando estándar ( psql ).
fuente
Intenta pasar la
--format=c
opción apg_dump
. Esto permitirápg_restore
restaurarlo.fuente
pg_restore: [archiver] did not find magic string in file header
para que esto no funcione para un simple volcado de sqlpg_dump --format=c ...> archivefile
, y luego usarpg_restore
enarchivefile
, entonces (al menos cuando lo probé hace un momento) que trabaja muy bien. Tal vez su archivo está dañado de alguna manera? ¿O has golpeado un error en particular?Esto es lo que haría para hacer una copia de seguridad de mi base de datos anterior y restaurar
Para hacer una copia de seguridad de su base de datos
Para restaurar esa copia de seguridad
Lea más sobre pg_dump y pg_restore
fuente
Para usuarios de Windows intente
Funciona de maravilla
fuente
Puede hacer algo al
SOURCE
comando de MySQL :Luego, en la terminal postgresql:
fuente
cat dumpFileName | psql -h ip -d dbName -U nombre de usuario -W
fuente
Este mensaje de error también podría significar que realmente hay algo mal con el archivo de respaldo (o sus suposiciones al respecto).
En un caso, había montado un archivo de copia de seguridad en un contenedor Docker e intenté restaurarlo, pero falló
does not appear to be a valid archive
. Y, de hecho, el archivo estaba vacío, porque el montaje no se realizó correctamente.fuente