我正在尝试以pg_dump
原始转储中的不同数据库名称还原二进制备份。尽管给出了--dbname
命令行参数,但pg_restore
仍会尝试恢复原始数据库名称下的所有内容——我特别想避免这种行为。
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;
如何pg_restore
以不同的名称恢复数据库?
pg_dump --version
pg_dump (PostgreSQL) 9.5.5
pg_restore --version
pg_restore (PostgreSQL) 9.6.1
您需要考虑的命令行选项很少。
-Fc
:从二进制备份恢复,因为它比纯文本 SQL 转储更灵活--dbname
: 在此数据库名称下恢复(必须使用 预先创建createdb
)-x
:不要尝试恢复访问权限(例如超级用户名可能会在数据库之间更改)--no-owner
:执行还原的系统上的数据库所有者用户不同--exit-on-error
:如果发生了不好的事情,请中止并且不要让您的终端充满无用的错误