CSV导入时忽略重复行

5

我想知道是否有可能,如果某个原因导致某行无法导入(例如:重复的主键、错误的输入类型等),它能被忽略并移动到下一行吗?

我正在遇到这个问题。

ERROR:  duplicate key value violates unique constraint "team_pkey"
DETAIL:  Key (team)=(DEN) already exists.
CONTEXT:  COPY team, line 23: "DEN,Denver,Rockets,A"

文件中有很多错误,而且文件很大,那么是否可以忽略无法插入的行?


这里可以找到一种可能的方法:https://dev59.com/bmYr5IYBdhLWcg3wG2pI - 这对你有用吗? - fvu
那会解决重复问题,但我怎么解决无效类型的问题呢? - LefterisL
可能是重复的问题:postgresql:\copy方法输入有效条目并丢弃异常 - Craig Ringer
这是一个经常讨论的话题,可以查看我上面发布的“可能重复”的链接中的相关答案。 - Craig Ringer
是的,我成功解决了重复问题,但有没有办法跳过无效行? - LefterisL
可能是重复的问题:从CSV导入时忽略重复项 - jww
1个回答

3

这里介绍了一种解决重复键问题的方法。简而言之,使用一个无约束的临时表和select distinct on uniquefield将数据导入目标表。

另一种方法是使用pgLoader。不幸的是,文档似乎已经从网站上消失了,但是作者的网站上有几篇教程文章。点击此处查看。它具有丰富的功能,可以帮助您读取存在问题的数据,并可以执行存储拒绝行到单独文件、转换字段等操作。

可能不太明显的是:pgLoader版本2是用Python编写的,版本3是用Lisp编写的。两者都可以从GitHub页面获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接