Estoy volcando mi base de datos Postgres usando pg_dump (en formato de texto plano) y luego la restauro simplemente usando psql (con el-f
opción).
Lo que plantea la pregunta: ¿me estoy perdiendo algo al no usar pg_restore que parece una herramienta de restauración especializada (en comparación con la genéricapsql
)?
Puedo controlar opciones como deshabilitar los desencadenantes y demás mediante el uso de pg_dump
parámetros. ¿Para qué se pg_restore
usa entonces ? formatos de volcado de texto no plano?
postgresql
postgresql-9.1
Marcus Junius Brutus
fuente
fuente
Respuestas:
Si creó un volcado de formato SQL, todo lo que puede usar es
psql
.Si creó un volcado de formato personalizado (
pg_dump -Fc
) o de formato de directorio (pg_dump -Fd
), puede y debe usarpg_restore
.Los volcados personalizados y de formato de directorio ofrecen muchas ventajas sobre los volcados de secuencias de comandos SQL simples, y los uso exclusivamente. Puede restaurar selectivamente solo algunas tablas / esquemas, puede elegir si incluir solo esquemas, solo datos o ambos en el momento de la restauración, etc. Muchas de las opciones que tiene que especificar en el
pg_dump
momento con volcados de formato SQL se pueden elegir en restaurar- tiempo si usa un volcado de formato personalizado ypg_restore
.Si no fuera por la compatibilidad con versiones anteriores, estoy seguro de que el formato predeterminado
pg_dump
sería-Fc
(personalizado).No puede convertir un volcado de formato SQL en formato personalizado o en formato de directorio sin restaurarlo en una base de datos PostgreSQL y luego volcar la base de datos restaurada.
fuente
pg_restore
sin undbname
argumento para convertirlo en un volcado de formato SQL si lo necesita. No puedes hacer lo contrario.pg_restore
admite la restauración paralela, y si la usas será MUCHO más rápido.