加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – pg_dump和pg_restore(DROP IF EXISTS)

发布时间:2020-12-13 16:15:00 所属栏目:百科 来源:网络整理
导读:我想要一个完全基于 shell的解决方案来测试我的数据库,允许我通过运行终端命令将其恢复到一致状态. 我像这样转储我的数据库: pg_dump -F c -b -f -i -h domain.edu -p 5432 -n myschema -U me mydatabase -W -f mydump.sql 然后我想恢复它: pg_restore -h
我想要一个完全基于 shell的解决方案来测试我的数据库,允许我通过运行终端命令将其恢复到一致状态.

我像这样转储我的数据库:

pg_dump -F c -b -f -i -h domain.edu -p 5432 -n myschema -U me mydatabase -W -f mydump.sql

然后我想恢复它:

pg_restore -h domain.edu -p 5432 -U me -d mydatabase -W mydump.sql

但它没有用,因为我遇到了很多这样的错误:

pg_restore: [archiver (db)] could not execute query: ERROR:  constraint "settings_person_id_fkey" for relation "settings" already exists
    Command was: ALTER TABLE ONLY settings
    ADD CONSTRAINT settings_learner_id_fkey FOREIGN KEY (person_id) REFERENCES pe...

基本上只有很多东西需要先重新添加才能被重新添加(DROP TABLE< what> IF EXISTS,与类型相同等).

我怎么能用Postgres做到这一点?我不想使用psql控制台,只有linux终端.

如果要将数据库还原到一致状态,建议您在还原转储之前删除并重新创建它:
dropdb -h domain.edu -U me mydatabase
createdb -h domain.edu -U me -T template0 mydatabase # adjust encoding/locale if necessary
pg_restore -h domain.edu -p 5432 -U me -d mydatabase -W mydump.sql

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读