Portál AbcLinuxu, 18. říjen 2017 02:23

Dotaz: Postgres - update tabulky z CSV

2.10.2016 00:37 Tom
Postgres - update tabulky z CSV
Přečteno: 506×
Odpovědět | Admin
Dobry den, mel bych takovy asi hodne zacatecnicky dotaz ohledne pridavani dat z CSV souboru do PostgreSQL

Mam Python script ve kterem do DB importuji vzdy nove CSV soubory pomoci psycopg2
SQL_STATEMENT = """
    COPY %s FROM STDIN WITH
    CSV
    HEADER
    DELIMITER AS ','
    """
dbcur.copy_expert(sql=SQL_STATEMENT % table_name, file=file_object)
To funguje, nove soubory se importuji v poradku. Potreboval bych ale nejak udelat to, ze kdyz se pokusim naimportovat soubor ktery obsahuje nejaka nova data a nejaka duplicitni, tak aby se naimportovala pouze ta nova data. Nyni mi import neprobehne vubec kvuli duplicite v Primary Key.

Jak by takova vec mela fungovat? Pujde to resit rovnou pri importovani toho souboru? Nebo mozna nejdrive import do nejake pomocne tabulky a nasledne porovnani/updatovani?

Na co se mam zamerit?

Dekuji. Tom

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

wamba avatar 2.10.2016 11:40 wamba | skóre: 37 | blog: wamba
Rozbalit Rozbalit vše Re: Postgres - update tabulky z CSV
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tady používají pomocnou tabulku a pak INSERT INTO … ON CONFLICT DO NOTHING;
This would have been so hard to fix when you don't know that there is in fact an easy fix.
3.10.2016 11:56 Tomáš
Rozbalit Rozbalit vše Re: Postgres - update tabulky z CSV
Odpovědět | | Sbalit | Link | Blokovat | Admin
natáhnout do extra tabulky tbl_import a potom to do cílové tabulky tbl_data natáhnout insertem

insert into tbl_data(primary_key, data)

select ti.primary_key, ti.data

from tbl_import as ti left outer join tbl_data as td on ti.primary_key = td.primary_key

where td.primary_key is null
4.10.2016 16:07 EtDirloth | skóre: 4
Rozbalit Rozbalit vše Re: Postgres - update tabulky z CSV
Odpovědět | | Sbalit | Link | Blokovat | Admin
islo by pouzit file FDW v kombinacii s INSTERT-SELECTom?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.