PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Para ignorar chaves duplicadas durante 'copiar de' no postgresql


Use a mesma abordagem descrita, mas DELETE (ou agrupar, ou modificar...) duplicar PK na tabela temporária antes de carregar na tabela principal.

Algo como:
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)

Detalhes:CREATE TABLE AS , COPY , DISTINCT ON