我的用例如下:我的数据来自csv文件,我需要将它加载到一个表格中(迄今为止这么好,没有新的东西)。可能会发生相同的数据与更新的列一起发送,在这种情况下,如果重复,我想尝试插入和替换。是否可以使用pgloader插入和替换行?
所以我的表如下:
CREATE TABLE codes (
code TEXT NOT NULL,
position_x INT,
position_y INT
PRIMARY KEY (code)
);
和传入的CSV文件是这样的:
TEST01,1,1
TEST02,1,2
TEST0131,3
TEST04,1,4
它可能在未来我与另一个csv文件的某个时候发生:
TEST01,1,1000 <<<<< updated value
TEST05,1,5
TEST0631,6
TEST07,1,7
现在正在发生的事情是当我跑第一个文件时,一切都很好,但是当我e xecute对于第二个我得到一个错误:
pgloader csv.load
而且我csv.load文件看起来像这样:
LOAD CSV
FROM 'codes.csv' (code, position_x, position_y)
INTO postgresql://localhost:5432/codes?tablename=codes (code, position_x, position_y)
WITH fields optionally enclosed by '"',
fields terminated by ',';
是什么
2017-04-26T10:33:51.306000+01:00 ERROR Database error 23505: duplicate key value violates unique constraint "codes_pkey"
DETAIL: Key (code)=(TEST01) already exists.
我使用加载数据我试图用pgloader做到这一点吗?
我也尝试删除主键的约束,但最终我在表中有重复的条目。
非常感谢您的帮助。
Thx为您的答案!以下是作者提供的一些额外信息,以及在问题中解释的实现所需结果的替代方法 - https://github.com/dimitri/pgloader/issues/540#issuecomment-297372388 – ktulinho