首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pg_restore

为什么pg_restore
EN

Database Administration用户
提问于 2015-12-15 04:47:16
回答 2查看 659关注 0票数 1

我在9.3服务器上备份了一个名为app_data的数据库,使用以下基本命令:

代码语言:javascript
复制
pg_dump -n public -F custom app_data > app_data.pg.dump

然后,我尝试在另一台服务器上恢复它(运行9.4),如下所示:

代码语言:javascript
复制
pg_restore -C -d postgres app_data.pg.dump 

但是它将所有的表都放在postgres数据库中。手册页说,它将创建和使用一个新的数据库,app_data

-C --在还原数据库之前创建数据库。...使用此选项时,使用-d命名的数据库仅用于发出初始删除数据库和创建数据库命令。将所有数据还原到存档中显示的数据库名称中。

这不是它要做的。存档中的名称是app_data

代码语言:javascript
复制
bash-4.2$ pg_restore -l app_data.pg.dump 
;
; Archive created at Tue Dec 15 04:16:52 2015
;     dbname: app_data
...

我做错什么了吗?

EN

回答 2

Database Administration用户

发布于 2019-01-09 05:15:40

是的,我应该向postgres报告这种行为,因为使用不同的标志似乎没有效果,只是不起作用。要解决这个问题,请使用:

  • 创建DB

createdb -h HOST -U USER -W DB_NAME

  • 恢复和如果出现错误停止

egrep -v 'EXTENSION.*plpgsql' DUMPFILE.sql | psql -h HOST -U USER -W -d DB_NAME -v ON_ERROR_STOP=1

票数 0
EN

Database Administration用户

发布于 2019-03-01 11:11:53

pg_restore -C -d postgres app_data.pg.dump,但它将所有表放在postgres数据库中

这不正是你要求它做的"-d postgres“的论点吗?

如果要加载不同的数据库,需要告诉pg_restore如下:

代码语言:javascript
复制
pg_restore -d app_data -C app_data.pg.dump
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/123690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档