首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳转违反唯一约束时转储db

跳转违反唯一约束时转储db
EN

Stack Overflow用户
提问于 2014-12-27 13:15:20
回答 1查看 2.1K关注 0票数 2

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

代码语言:javascript
复制
ERROR:  duplicate key value violates unique constraint "test_table_pkey"
DETAIL:  Key (pktable)=(col11) already exists.
CONTEXT:  COPY test_table, line 1: "col11  col12"

我的桌子是;

代码语言:javascript
复制
   Column    |         Type          | Modifiers 
-------------+-----------------------+-----------
 pktable     | text                  | not null
 source      | text                  | not null
Indexes:
    "test_table_pkey" PRIMARY KEY, btree (pktable)

我的命令是;

代码语言:javascript
复制
pg_dump -U postgres -v --data-only <db_name> | psql -U postgres -h <remote_host> -d <db_name>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-27 13:21:39

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

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27667581

复制
相关文章

相似问题

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