2009-08-11 69 views
0

我正在将一个CSV文件导入到postgres中。Postgres csv导入重复键错误?

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

好,最好的办法是不过滤的数据遏制重复。这通常很容易,并且不需要很多编程。

例如:

假设你的数据的第一列是主键的数据和文件不是很大(假设您的RAM的LES超过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