Postgres CSV импорт ошибки дубликата ключа? - PullRequest
0 голосов
/ 11 августа 2009

Я импортирую файл 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 ]

2 голосов
/ 11 августа 2009

Что ж, лучший способ - фильтровать данные, чтобы они не содержали дубликатов. Обычно это довольно просто и не требует большого количества программирования.

Например:

Предполагая, что 1-й столбец ваших данных представляет собой данные для первичного ключа, а файл не очень большой (скажем, менее 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
0 голосов
/ 18 августа 2013

Использование uniqe команды csv-fix Утилита.

...