首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以插入并用pgloader替换行?

是否可以插入并用pgloader替换行?
EN

Stack Overflow用户
提问于 2017-04-26 11:03:50
回答 1查看 717关注 0票数 0

我的用例如下:我有来自csv文件的数据,我需要将它加载到一个表中(到目前为止,这里没有什么新的)。可能发生的情况是,使用更新的列发送相同的数据,在这种情况下,我想在重复的情况下尝试插入和替换。

我的桌子如下:

代码语言:javascript
复制
CREATE TABLE codes (
  code            TEXT NOT NULL,
  position_x      INT,
  position_y      INT
  PRIMARY KEY (code)
);

传入的csv文件是这样的:

代码语言:javascript
复制
TEST01,1,1
TEST02,1,2
TEST0131,3
TEST04,1,4

将来的某个时候,我可能会得到另一个csv文件,其中包括:

代码语言:javascript
复制
TEST01,1,1000 <<<<< updated value
TEST05,1,5
TEST0631,6
TEST07,1,7

现在发生的事情是,当我运行第一个文件时,一切都很好,但是当我执行第二个文件时,我得到了一个错误:

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

我使用以下方法加载数据:

代码语言:javascript
复制
pgloader csv.load

我的csv.load文件如下所示:

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

我想用pgloader做的事有可能吗?

我还尝试删除主键的约束,但最后在表中出现了重复条目。

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 11:41:28

不,你不能。根据参考文献的说法

为了解决这个问题(加载异常,例如PK违规),pgloader将数据分成25000行,这样当出现问题时,它只会影响到那么多行数据。

在括号里-我的.

最好的方法是将csv加载到具有相同结构的表中,然后借助查询(EXCEPTOUTER JOIN ... where null等)合并数据。

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

https://stackoverflow.com/questions/43632349

复制
相关文章

相似问题

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