La guía o código que verás en este post es la solución más sencilla y efectiva que hallamos a esta duda o problema.
Solución:
Solución 1:
Está descargando en formato SQL simple que fue diseñado para alimentar a psql
. Esto no es reconocido por pg_restore
.
cat db.txt | psql dbname
debería hacer el truco
Solución 2:
pg_dump
por defecto crea los comandos sql necesarios para recrear los datos. Para recuperarlo, solo necesitas invocar psql
(no pg_restore
) con el archivo como entrada . pg_restore
solo se debe usar para el binario (no predeterminado, y menos habitual no recomendado) formato de pg_dump
. Lea los documentos.
Actualizar el pg_dump
formatos binarios (-Fc
-Ft
) que se van a utilizar con pg_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 manipular 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 apta.
El punto a tener en cuenta es que en Postgresql, en el escenario típicola copia de seguridad normalmente la realiza pg_dump (sin formato) y la restauración con el cliente de línea de comando estándar (psql).
Solución 3:
Prueba a pasar el --format=c
opción a pg_dump
. Esto permitira pg_restore
para restaurarlo.
Solución 4:
Esto es lo que haría para hacer una copia de seguridad de mi antigua base de datos y restaurar
Para hacer una copia de seguridad de su base de datos
pg_dump --format=c olddb_name > db_dump_file.dump
Para restaurar esa copia de seguridad
pg_restore -v -d newdb_name db_dump_file.dump
Lea más sobre pg_dump y pg_restore
Solución 5:
Para los usuarios de Windows, intente
type db.txt | psql --username="YOURNAME" dbname
Funciona de maravilla