Cómo crear una base de datos al restaurar

Cómo crear una base de datos al restaurar

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, -dpor ejemplo con -d postgres o -d template1. También tenga en cuenta que su copia de seguridad debe contener el CREATE DATABASEcomando, cuya presencia depende de los argumentos utilizados con pg_dump.

información relacionada