Използвайте същия подход, както описахте, но DELETE
(или групирайте, или модифицирайте ...) дублиран PK
във временната таблица преди зареждане в основната таблица.
Нещо като:
CREATE TEMP TABLE tmp_table
ON COMMIT DROP
AS
SELECT *
FROM main_table
WITH NO DATA;
COPY tmp_table FROM 'full/file/name/here';
INSERT INTO main_table
SELECT DISTINCT ON (PK_field) *
FROM tmp_table
ORDER BY (some_fields)
Подробности:CREATE TABLE AS
, COPY
, DISTINCT ON