Mik*_*maa 6 postgresql pg-dump
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;
Run Code Online (Sandbox Code Playgroud)
如何才能pg_restore
以不同的名称恢复数据库?
pg_dump --version
pg_dump (PostgreSQL) 9.5.5
pg_restore --version
pg_restore (PostgreSQL) 9.6.1
Run Code Online (Sandbox Code Playgroud)
您需要考虑几个命令行选项。
pg_restore -x --no-owner --dbname=mynewdb --exit-on-error -Fc database.bak
Run Code Online (Sandbox Code Playgroud)
-Fc
:从二进制备份恢复,因为它比纯文本 SQL 转储更灵活
--dbname
:在此数据库名称下恢复(必须使用 预先创建createdb
)
-x
:不要尝试恢复访问权限(例如,超级用户名可能会在数据库之间更改)
--no-owner
:执行还原的系统上的数据库所有者用户不同
--exit-on-error
:如果发生不好的事情,请中止并且不要让您的终端充满无用的错误