sql >> Databáze >  >> RDS >> PostgreSQL

Chcete-li ignorovat duplicitní klíče během „kopírování z“ v postgresql

Použijte stejný přístup, jaký jste popsali, ale DELETE (nebo seskupit nebo upravit ...) duplikovat PK v dočasné tabulce před načtením do hlavní tabulky.

Něco jako:

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)

Podrobnosti:CREATE TABLE AS , COPY , DISTINCT ON



  1. Dochází k zásahu do výkonu pomocí desítkových datových typů (MySQL / Postgres)

  2. Count(*) vs Count(1) - SQL Server

  3. datetime2 vs datetimeoffset v SQL Server:Jaký je rozdíl?

  4. Název sloupce tabulky Oracle s mezerou