
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, -d
por exemplo, com -d postgres
ou -d template1
. Observe também que seu backup deve conter o CREATE DATABASE
comando, cuja presença depende dos argumentos usados com pg_dump
.