Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 转储数据库时跳过违反唯一约束_Postgresql_Pg Dump - Fatal编程技术网

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

Postgresql 转储数据库时跳过违反唯一约束,postgresql,pg-dump,Postgresql,Pg Dump,我尝试将一个db转储到另一个db。表中存在一些重复的唯一值。当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" 我的桌子是 Colu

我尝试将一个db转储到另一个db。表中存在一些重复的唯一值。当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"
我的桌子是

   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-U postgres-v--仅数据| psql-U postgres-h-d

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

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

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;
如果新插入的行已经在表中,则基本上不会触发
,而不会触发任何内容


(基于此:)

如果键相同,但其余行不同怎么办?在我的例子中,如果键相同,则所有行也必须相同。然而,在我的情况下,Lajos编写的这个规则可能会导致另一个问题。这个规则会导致什么问题?