pondělí 12. ledna 2009

Rozšíření Knowledge Modulu - LKM File to Oracle (SQLLDR)

V případě, že uvažujete pro load textových extraktů do databáze využít Knowledge Modul (KM) s názvem „LKM File to Oracle (SQLLDR)“ pak se Vám může hodit následující:

ODI v tomto KM používá SQL*Loader – Oracle utilita pro dávkové načítání textových souborů do databáze.
Control file pro SQL*Loader je automaticky generovaný z tohoto KM (Version: 4.0, Last Update: DEC-2004) a počítá s tím, že vstupní sada záznamů bude úplná, tj. bude obsahovat všechny zadefinované sloupce.


Příklad vygenerovaného Control file:
...
INTO TABLE ODI_TMP.C$_0INT_OSSZ
(
C4_ORG_STRUKTURA,
C1_UCT_ROK,
C3_UCT_MESIC,
C5_UCT_SSZ,
C2_UCT_SSZ_MADATI,
C6_UCT_SSZ_DAL
)



Počítá s tím, že zdrojový soubor bude mít všech 6 sloupců, např.:
110|2005|10|205011|20363462,96|1535030480,30
110|2005|10|205012|16359837,87|341012197,91
110|2005|10|205013|21984753,00|163126610,37



V případě, že záznam má sloupců pouze 5:
|2005|10|205011|20363462,96|1535030480,30 (1. sloupec je prázdný – no problem)
110|2005||205012|16359837,87|341012197,91 (3. sloupce je prázdný – no problem)
110|2005|10|205013|21984753,00| (6. sloupec chybí – problem!)


Pak celý load skončí s chybou:



V „bad filu“ (soubor SQL*Loaderu) je uveden chybný záznam:
110|2005|10|205013|21984753,00|


A do „log filu“ (soubor SQL*Loaderu) je vygenerovaná hláška a rada:
Záznam 3: odmítnut - chyba v tabulce ODI_TMP.C$_0INT_OSSZ, sloupec C6_UCT_SSZ_DAL Sloupec nenalezen před koncem logického záznamu (užijte TRAILING NULLCOLS)


Jestliže KM „LKM File to Oracle (SQLLDR)“ rozšíříte o TRAILING NULLCOLS, pak load proběhne v pořádku a místo chybějícího 6. sloupce bude vložena hodnota NULL.


Jak upravit Knowledge Modul:

1/ Zkopírujte KM: vyberte KM > pravé tlačítko myši > Duplicate


2/ Upravte kopii: přejděte na záložku „Details“ > otevřete krok (Order) 41 a doplňte TRAILING NULLCOLS


3/ Přejděte na záložku „Definition“ > přejmenujte KM > do popisu doplňte změnu a uložte


4/ Nastavte volání upraveného KM ve všech Vašich stávajících/nových „Interfacech“




Erik Eckhardt.

Žádné komentáře: