PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pour ignorer les clés en double lors de la "copie de" dans postgresql

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