PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Um doppelte Schlüssel während des Kopierens von in Postgresql zu ignorieren

Verwenden Sie den gleichen Ansatz wie Sie beschrieben haben, aber DELETE (oder gruppieren oder modifizieren ...) PK duplizieren in der temporären Tabelle vor dem Laden in die Haupttabelle.

Etwas wie:

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)

Details:CREATE TABLE AS , COPY , DISTINCT ON