Portál AbcLinuxu, 12. května 2025 17:03
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
sort -u
?
No, já toto řeším takto:
_ex
_ex
tabulky)_ex
tabulky do cílové tabulky (s případnou modifikací)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šší.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.