Utilisez la même approche que celle que vous avez décrite, mais DELETE
(ou grouper, ou modifier ...) dupliquer PK
dans la table temporaire avant de charger dans la table principale.
Quelque chose comme :
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)
Détails :CREATE TABLE AS
, COPY
, DISTINCT ON