gpt4 book ai didi

postgresql - pg_dump 和 pg_restore(如果存在则丢弃)

转载 作者:行者123 更新时间:2023-11-29 11:14:29 25 4
gpt4 key购买 nike

我想要一个完全基于 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 <whatever> IF EXISTS ,与类型等相同)。

我如何使用 Postgres 做到这一点?我不想使用 psql控制台,只有 linux 终端。

最佳答案

您可以在 pg_dump 中使用 --clean 来首先删除对象:

pg_dump --clean

备份

pg_dump --clean -U user database > database.sql

恢复

psql -U user -d database -f database.sql

关于postgresql - pg_dump 和 pg_restore(如果存在则丢弃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22287914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com