De la pg_dump
documentación:
Ejemplos
Para volcar una base de datos llamada mydb en un archivo de script SQL :
$ pg_dump mydb > db.sql
Para volver a cargar dicho script en una base de datos (recién creada) llamada newdb :
$ psql -d newdb -f db.sql
Para volcar una base de datos en un archivo de formato personalizado:
$ pg_dump -Fc mydb > db.dump
Para volcar una base de datos en un archivo con formato de directorio:
$ pg_dump -Fd mydb -f dumpdir
Para volver a cargar un archivo de almacenamiento en una base de datos (recién creada) llamada newdb:
$ pg_restore -d newdb db.dump
De la pg_restore
documentación:
Ejemplos
Supongamos que hemos volcado una base de datos llamada mydb en un archivo de volcado de formato personalizado:
$ pg_dump -Fc mydb > db.dump
Para eliminar la base de datos y volver a crearla desde el volcado:
$ dropdb mydb
$ pg_restore -C -d postgres db.dump
La respuesta anterior no funcionó para mí, esto funcionó:
psql db_development < postgres_db.dump
fuente
Para mí, cuando intento restaurar desde un host remoto que utilicé
funcionó bien. Y si no funcionaba el comando de seguimiento remoto.
fuente
Para crear una copia de seguridad
pg_dump
que sea compatible conpg_restore
, debe usar--format=custom
/-Fc
al crear su volcado.De los documentos:
Entonces su
pg_dump
comando podría verse así:Y tu
pg_restore
comando:fuente
Para mí, está funcionando como este. C: \ Archivos de programa \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql
fuente
si usa pg_dump con -Fp para hacer una copia de seguridad en formato de texto sin formato, use el siguiente comando:
para copiar todos los datos a su base de datos con el nombre dbname
fuente
Si tiene un volcado de base de datos completo:
Sin embargo, si mantiene los esquemas por separado, eso no funcionará. Luego, deberá deshabilitar los activadores para la inserción de datos, similar a
pg_restore --disable-triggers
. Luego puedes usar esto:cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin
En una nota al margen, creo que es una desventaja muy desafortunada de postgres. La forma predeterminada de crear un volcado
pg_dump
es incompatible conpg_restore
. Sin embargo, con algunas claves adicionales, lo es. WTF?fuente