
Quiero que pg_restore cree una base de datos antes de restaurar usando Postgres 12 en Debian 10
Lo intenté
PG_COLOR=auto
PGHOST=localhost
PGPASSWORD=mypass
PGUSER=postgres
export PGHOST PGPASSWORD PG_COLOR PGUSER
pg_restore --clean --create --if-exists --dbname=mydb --jobs=4 --verbose "mydb.backup"
pero obtuve un error
pg_restore: conexión a la base de datos para restaurar pg_restore: error: error en la conexión a la base de datos "mydb": FATAL: la base de datos "mydb" no existe
¿Cómo crear una base de datos antes de restaurarla?
usando Postgres 12 en Debian 10
Respuesta1
El pg_restoredocumentaciónexplica este error:
-C --crear
Cree la base de datos antes de restaurarla. Si también se especifica --clean, elimine y vuelva a crear la base de datos de destino antes de conectarse a ella.
Con --create, pg_restore también restaura el comentario de la base de datos, si lo hay, y cualquier configuración de variable de configuración que sea específica de esta base de datos, es decir, cualquier ALTER DATABASE... SET... y ALTER ROLE... IN DATABASE... SET... comandos que mencionan esta base de datos. Los privilegios de acceso a la base de datos también se restauran, a menos que se especifique --no-acl.
Cuando se utiliza esta opción,la base de datos nombrada con -d se usa solo para emitir los comandos iniciales DROP DATABASE y CREATE DATABASE. Todos los datos se restauran en el nombre de la base de datos que aparece en el archivo.
Debe pasar una base de datos preexistente, -d
por ejemplo con -d postgres
o -d template1
. También tenga en cuenta que su copia de seguridad debe contener el CREATE DATABASE
comando, cuya presencia depende de los argumentos utilizados con pg_dump
.