čtvrtek 9. dubna 2009

ODI – OdiSqlUnload - jiný (výkonný) způsob jak vytvářet textové extrakty z libovolné databáze

Jak jsem již popisoval v článku „ODI – Jak udělat textový extrakt z libovolné databáze“, existují Integrační Knowledge moduly, které výše zmíněné umožňují. Jejich hlavní výhoda spočívá v tom, že přímo volají databázové utility pro „bulk unload“ dat z databáze do textového souboru. Jelikož jde o Integrační Knowledge moduly, tak pro jejich použití musí být vytvořen Interface s mapováním, nemluvě o tom, že zdroj i cíl musí být zadefinován v Topologii a v Modelu. Jde sice o více práce, ale přinese Vám to ovoce v podobě kompletní Lineage.

V ODI existuje ještě jiná možnost jak generovat textové extrakty z libovolné databáze, a to bez nutnosti zadefinování Topologie, Modelů a vytváření Interfaců. Tou možností je OdiSqlUnload - výkonná bulk utilita pro unload / extrakt dat z různých RDBMS do souboru (flat file nebo XML).

OdiSqlUnload lze využívat přímo ve Workflow, v ODI procedurách nebo v Knowledge modulech - například je využíván v LKM SQL to Teradata / DB2 / MSSQL / SAS nebo Sybase.


Jeho použití je velice jednoduché. Drag&Drop si jej vložíte do workflow


, případně manualně napíšete jeho syntaxi:

OdiSqlUnload -FILE= -DRIVER= -URL= -USER= -PASS= [-FILE_FORMAT=] [-FIELD_SEP= field_sep> | -XFIELD_SEP=] [-ROW_SEP= | -XROW_SEP= row_sep>] [-DATE_FORMAT=] [-ABS=] [-CHARSET_ENCODING=] [-XML_CHARSET_ENCODING=] [-FETCH_SIZE=] [CR/LF | -QUERY= | -QUERY_FILE= ]


a nadefinujete potřebné parametry, jako je název a umístění výstupního souboru, driver, zdrojová databáze, výstupní formát (fixed, delimited, XML), formátování souboru (oddělovače, znaková sada, datum), vstupní SELECT, Fetch Size, ....


UPOZORNĚNÍ: Z důvodu maximální výkonnosti:
  1. je mnohem lepší nechat veškeré formátování výstupu (oddělovače, formát datumu, kódování, ....) na databázi, tj. místo „select * from table“ použít "select column1 || '~' || column2 from table".

  2. změnit defaultní hodnotu parametru Fetch Size - počet záznamů, které jsou najednou zapsány do výstupního souboru (výbornou zkušenost mám s hodnotou 100tisíc, ale vše je otázkou RDBMS, OS, dostupné paměti a nastavení runtime parametrů).


Erik Eckhardt.

1 komentář: