0

私はPostgreSQLの本に従っており、CSVファイルをテーブルにインポートする必要がありましたcensus.lu_tracts

問題:INSERT以下に示すようにクエリを実行すると、エラーが発生します。

ERROR:  duplicate key value violates unique constraint "pk_lu_tracts"
DETAIL:  Key (tract_id)=(25001010800) already exists.

キーはどのように複製されましたか? SELECT * from lu_tracs0 行を示します。

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]+';
4

1 に答える 1

1

正しい答えはDISTINCT ON (geo_id2)、geo_id2 ごとに 1 つの行のみを選択するものです (詳細はマニュアルを参照)。どの行を選択するかを指定する ORDER BY 句を付ける必要があります。

于 2013-05-11T11:04:18.357 に答える