Я следую за книгой PostgreSQL и должен был импортировать CSV-файл в таблицу census.lu_tracts
.Повторяющийся ключ во время импорта в PostgreSQL
Проблема: При выполнении INSERT
запроса, как показано ниже, я получаю ошибку:
ERROR: duplicate key value violates unique constraint "pk_lu_tracts"
DETAIL: Key (tract_id)=(25001010800) already exists.
Как ключ становится продублировать? SELECT * from lu_tracs
показывает 0 строк.
CREATE SCHEMA census;
set search_path=census;
CREATE TABLE lu_tracts(tract_id varchar(11), tract_long_id varchar(25)
, tract_name varchar(150)
, CONSTRAINT pk_lu_tracts PRIMARY KEY (tract_id));
INSERT INTO lu_tracts(tract_id, tract_long_id, tract_name)
SELECT geo_id2, geo_id, geo_display
FROM staging.factfinder_import
WHERE geo_id2 ~ '^[0-9]+';
Сделка была прервана, поэтому никаких строк не было вставлено - и почему вы видите 0 строк в этой таблице. Скорее всего, у вас есть дубликат в таблице 'staging.factfiner_import', где' geo_id2' = '25001010800'. Вы можете попробовать использовать 'SELECT DISTINCT', который может его исправить. В противном случае вам нужно будет отфильтровать его другим способом. – jcern
'DISTINCT ON (geo_id2)' вероятно, будет лучше, чем просто 'DISTINCT'. –
'DISTINCT ON (geoid2)' works :) – Nyxynyx