Portál AbcLinuxu, 26. dubna 2024 21:53


Dotaz: Zjisteni duplicitnich radku pri importu dat

5.3.2009 15:20 Mirekh
Zjisteni duplicitnich radku pri importu dat
Přečteno: 430×
Odpovědět | Admin

Zdravim,

mam davku, ktera  importuje data (4 sloupce cisel) do tabulky pomoci    load data infile

prvni dva sloupce jsou nastaveny jako primarni klic, mimo jine i proto ze neni  dovoleno aby bylo vice radku se stejnymi cisly v techto sloupcich.

Takze pokud  jsou v soboru duplicitni radky import do tabulky neprobehne a posle se email.

Bohuzel ale tezko se zjistuje  kde je chyba,

Dotaz,  je mozne aby chyba vratila i duplicitni radky na kterych  chyba vznikla ?  Kvuli snadnemu a rychlemu zjisteni kde je problem .

 

Dekuji

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

Odpovědi

5.3.2009 16:12 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Zjisteni duplicitnich radku pri importu dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
sort -u ?
default avatar 6.3.2009 23:38 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: Zjisteni duplicitnich radku pri importu dat
Odpovědět | | Sbalit | Link | Blokovat | Admin

No, já toto řeším takto:

  1. nahraji soubor do tabulky s příponou _ex
  2. provedu business kontroly (technické kontroly — kontrola formátu a datových typů — se provádí při importu do _ex tabulky)
  3. pod transakcí:
    • v případě, že se jedná o full-refresh:
      1. smažu cílovou tabulku
      2. překopíruji obsah _ex tabulky do cílové tabulky (s případnou modifikací)
    • v případě inkrementu:
      1. provedu MERGE dat z _ex tabulky do cílové (mělo by jít vyřešit příkazy UPDATE a INSERT na databázích, které nemají obdobu Oraclího MERGE)

V případě, že kterýkoli krok selže, celý proces končí s chybou.

Mám na to hotový nástroj (run-time). Jen stačí založit tabulky, vyplnit Control File pro SQL*Loader a jeden nebo dva SQL skripty.

Vypadá to zdlouhavě a nevýhodně, ale je to nejrychlejší a nejbezpečnější cesta. Navíc — data jsou v databázi (v _ex tabulce), takže se dají lépe dohledat případné problémy; zvláště oproti datům, které již v databázi jsou.

Pak mám ještě další nástroj, který výše uvedený postup řeší mnohem lépe, ale ten je napsaný v Javě a konfiguruje se v XML, což může být pro zdejší C vs. C++ Performance Gurus nepřekonatelný problém.

Výhoda obou nástrojů (a přístupů) je, že se v log souborech objeví (v případě chyby) konkrétní hodnoty, popis business požadavku, který byl porušen (a v případě Javího řešení — i číslo řádky ve vstupním souboru — lze též ošetřit SQL*Loaderem, ale za cenu drobné obfuskace). Takže support team má život o trošku jednodušší. :-D

10.3.2009 12:11 Mirekh
Rozbalit Rozbalit vše Re: Zjisteni duplicitnich radku pri importu dat

zapomnel jsem dodat, ze se jedna o Mysql DB

default avatar 10.3.2009 13:02 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: Zjisteni duplicitnich radku pri importu dat

Jde o princip a ten je všude stejný; ať se jedná o databázi nebo excel. :-D

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.