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_dumppor defecto crea los comandos sql necesarios para recrear los datos. Para recuperarlo, solo necesita invocarpsql(nopg_restore) con el archivo como entrada.pg_restoresolo se debe utilizar para el formato binario (no predeterminado y menos habitualno recomendado) depg_dump. Lee los documentos .Actualización:
pg_dumplos formatos binarios (-Fc-Ft) que se utilizaránpg_restoreestá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=copción apg_dump. Esto permitirápg_restorerestaurarlo.fuente
pg_restore: [archiver] did not find magic string in file headerpara que esto no funcione para un simple volcado de sqlpg_dump --format=c ...> archivefile, y luego usarpg_restoreenarchivefile, 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
SOURCEcomando 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