Postgres csv导入重复键错误?

时间:2009-08-11 15:37:57

标签: postgresql csv import duplicate-removal

我正在将CSV文件导入postgres。

copy product from '/tmp/a.csv' DELIMITERS ',' CSV;
ERROR:  duplicate key value violates unique constraint "product_pkey"
CONTEXT:  COPY product, line 13: "1,abcd,100 pack"

避免此错误的最佳方法是什么..我是否必须编写一个python脚本来处理此错误..

2 个答案:

答案 0 :(得分:2)

嗯,最好的方法是过滤数据不包含重复项。它通常很简单,并且不需要很多编程。

例如:

假设您的数据的第一列是主键的数据而且文件不是很大(假设您的ram小于60%),您可以:

awk -F, '(!X[$1]) {X[$1]=1; print $0}' /tmp/a.csv > /tmp/b.csv

并加载/tmp/b.csv。

如果文件较大,那么我会建议这样的事情:

sort /tmp/a.csv | awk -F, 'BEGIN {P="\n"} ($1 != P) {print $0; P=$1}' > /tmp/b.csv

答案 1 :(得分:0)

使用uniqe实用程序的csv-fix命令。