gpt4 book ai didi

postgresql - 转储数据库时跳过违反唯一约束

转载 作者:行者123 更新时间:2023-11-29 13:01:50 24 4
gpt4 key购买 nike

我尝试将一个数据库转储到另一个数据库。表中有一些重复的唯一值。当 pg_dump 尝试将此项添加到 db 时,它抛出错误并退出。错误就像;

ERROR:  duplicate key value violates unique constraint "test_table_pkey"
DETAIL: Key (pktable)=(col11) already exists.
CONTEXT: COPY test_table, line 1: "col11 col12"

我的 table 是;

   Column    |         Type          | Modifiers 
-------------+-----------------------+-----------
pktable | text | not null
source | text | not null
Indexes:
"test_table_pkey" PRIMARY KEY, btree (pktable)

我的命令是;

pg_dump -U postgres -v --data-only <db_name> | psql -U postgres -h <remote_host> -d <db_name>

我希望 pg_dump 跳过重复的唯一值并继续转储操作。我该怎么做?

最佳答案

我认为这条规则可以帮助你:

CREATE RULE "my_table_on_duplicate_ignore" AS ON INSERT TO "my_table"
WHERE EXISTS(SELECT 1 FROM my_table
WHERE (pk_col_1, pk_col_2)=(NEW.pk_col_1, NEW.pk_col_2))
DO INSTEAD NOTHING;

基本上,如果新插入的行已经在表中,就会触发 INSTEAD NOTHING

(基于此:https://stackoverflow.com/a/6176044/1665673)

关于postgresql - 转储数据库时跳过违反唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667581/

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