PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Per ignorare le chiavi duplicate durante la "copia da" in postgresql

Usa lo stesso approccio che hai descritto, ma DELETE (o raggruppare, o modificare...) duplicare PK nella tabella temporanea prima di caricare nella tabella principale.

Qualcosa come:

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)

Dettagli:CREATE TABLE AS , COPY , DISTINCT ON