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

Nejlepší způsob, jak zabránit duplicitním datům na kopírování csv postgresql

Upsert

Odpověď od Linoffa je správná, ale lze ji trochu zjednodušit Nová funkce „UPSERT“ Postgres 9.5 (také znám jako MERGE ). Tato nová funkce je implementována v Postgres jako INSERT ON CONFLICT syntaxe.

Spíše než explicitně kontrolovat porušení jedinečného indexu můžeme nechat ON CONFLICT doložka odhalit porušení. Potom DO NOTHING , což znamená, že opouštíme snahu INSERT aniž byste se museli pokoušet o UPDATE . Takže pokud nemůžeme vložit, přejdeme na další řádek.

Získáme stejné výsledky jako Linoffův kód, ale ztratíme WHERE doložka.

INSERT INTO bigtable(col1, … )
    SELECT col1, …
    FROM stagingtable st
ON CONFLICT idx_bigtable_col1_col2_col
DO NOTHING
;


  1. Chyba SQLAlchemy+pymysql:sqlalchemy.util.queue.Empty

  2. Průběžné součty v zobrazení SQL

  3. Nelze spustit službu MySQL, XAMPP

  4. průměrný prodej za čtvrtletí s průměrným prodejem za předchozí čtvrtletí