gpt4 book ai didi

postgresql - 如何在 postgresql 中使用副本时忽略重复键

转载 作者:行者123 更新时间:2023-12-05 06:42:59 25 4
gpt4 key购买 nike

我正在使用 COPY table_name FROM STDIN 导入数据。这是非常高效,但是如果有任何违反重复键的情况,整个程序将被停止。有什么办法可以解决这个问题吗?

为什么 postgresql 不给出警告并复制其余数据?

例子如下:

 select * from "Demo1";
Id | Name | Age
---+-------+-----
1 | abc | 20
2 | def | 22


COPY "Demo1" from STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 3 pqr 25
>> 4 xyz 26
>> 5 abc 21
>> \.

ERROR: duplicate key value violates unique constraint "Demo1_Name_key"
DETAIL: Key ("Name")=(abc) already exists.
CONTEXT: COPY Demo1, line 3

此处“名称”字段具有唯一约束。因为字符串“abc”已经存在于表中。它忽略了整个过程。

最佳答案

您可以使用这两种方法中的任何一种来导入数据:

  1. COPY FROM(到临时表)。排除主键故障并仅导入有效数据。
  2. 使用 FDW(如 this 示例)。 Foreign-Data-Wrappers 建议用于 Live Feeds/非常大的数据集,因为您不需要创建临时副本(用于错误/跳过列/跳过行等),并且可以直接运行 SELECT 语句跳过任何列/行并将 INSERT 插入目标表。

关于postgresql - 如何在 postgresql 中使用副本时忽略重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171307/

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