Como criar banco de dados na restauração

Como criar banco de dados na restauração

Quero que o pg_restore crie o banco de dados antes da restauração usando Postgres 12 no Debian 10

tentei

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"

mas deu erro

pg_restore: conectando ao banco de dados para restauração pg_restore: erro: falha na conexão com o banco de dados "mydb": FATAL: o banco de dados "mydb" não existe

Como criar banco de dados antes da restauração?

usando Postgres 12 no Debian 10

Responder1

O pg_restoredocumentaçãoexplica esse erro:

-C --criar

Crie o banco de dados antes de restaurá-lo. Se --clean também for especificado, elimine e recrie o banco de dados de destino antes de conectar-se a ele.

Com --create, o pg_restore também restaura o comentário do banco de dados, se houver, e quaisquer definições de variáveis ​​de configuração específicas deste banco de dados, ou seja, qualquer ALTER DATABASE ... SET ... e ALTER ROLE ... IN DATABASE ... SET ... comandos que mencionam este banco de dados. Os privilégios de acesso ao próprio banco de dados também são restaurados, a menos que --no-acl seja especificado.

Quando esta opção é usada,o banco de dados nomeado com -d é usado apenas para emitir os comandos iniciais DROP DATABASE e CREATE DATABASE. Todos os dados são restaurados no nome do banco de dados que aparece no arquivo.

Você deve passar um banco de dados pré-existente, -dpor exemplo, com -d postgres ou -d template1. Observe também que seu backup deve conter o CREATE DATABASEcomando, cuja presença depende dos argumentos usados ​​com pg_dump.

informação relacionada