Estou tentando restaurar um pg_dump
backup binário com um nome de banco de dados diferente que estava no dump original. Apesar de dar --dbname
argumento de linha de comando, pg_restore
tenta restaurar tudo sob o nome original do banco de dados - o comportamento que eu particularmente quero evitar.
createdb mydb
pg_restore --dbname=mydb --exit-on-error -Fc database.bak
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 8; 2615 16396 SCHEMA topology u9o2f4j0
pg_restore: [archiver (db)] could not execute query: ERROR: schema "topology" already exists
Command was: CREATE SCHEMA topology;
Como posso fazer pg_restore
para restaurar o banco de dados com um nome diferente?
pg_dump --version
pg_dump (PostgreSQL) 9.5.5
pg_restore --version
pg_restore (PostgreSQL) 9.6.1
Existem algumas opções de linha de comando que você precisa considerar.
-Fc
: restaurar a partir de um backup binário como é mais flexível do que o dump SQL de texto simples--dbname
: restaurar sob este nome de banco de dados (deve ser criado antes usandocreatedb
)-x
: não tente restaurar privilégios de acesso (por exemplo, o nome do superusuário pode mudar entre os bancos de dados)--no-owner
: o usuário proprietário do banco de dados é diferente no sistema em que a restauração é executada--exit-on-error
: Se coisas ruins acontecerem, aborte e não inunde seu terminal com erros inúteis