2009-08-11 110 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