Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyDatabázové systémy v biomedicíně Export a import dat Import dat Import dat pomocí SQLLDR (ORACLE)

Logo Matematická biologie

Import dat pomocí SQLLDR (ORACLE)

Metoda vkládání dat pomocí sestavovaných INSERT příkazů je vhodná do cca 10 tisíc záznamů. Pro větší objem dat je vhodnější použít specializovaný software pro import data, tzv. datovou pumpu. Více či méně kvalitních datových pump je ke stažení velké množství, pro práci s databází ORACLE je však nejspolehlivější použít aplikaci SQLLDR přímo od firmy ORACLE. Tato aplikace je součástí instalace databázového klienta a patří mezi databázové utility. Je primárně určena k importu dat z textového souboru do databáze. Jde o řádkovou aplikaci, která se ovládá přes kontrolní soubor. Pomocí něj specifikujeme strukturu importovaných dat i cílovou tabulku. Importovat lze textový soubor se sloupci oddělenými specifickým oddělovačem i textové soubory s pevnou strukturou. Možnosti konfigurace aplikace Sqlloader jsou velice široké, podíváme se na nejdůležitější prvky. Mějme textový soubor (zdroj.txt), který obsahuje 3 sloupce, jeden číselný, druhý textový, třetí bude obsahovat datumy, sloupce jsou od sebe odděleny středníkem. Než začneme s importem, musíme nejprve vytvořit cílovou tabulku:

CREATE TABLE importovana_data

(

     cislo NUMBER(10,0),

     text VARCHAR2(50),

     datum DATE

);

Nejstručnější konfigurační soubor aplikace Sqlloader musí obsahovat minimálně odkaz na zdrojový soubor, cílovou tabulku, specifikaci oddělovače sloupců a seznam importovaných sloupců:

LOAD   DATA   INFILE  "C:zdroj.txt"

APPEND INTO TABLE importovana_data

FIELDS TERMINATED BY ";"

(cislo, text, datum DATE "DD.MM.YYYY")

Tímto zápisem v konfiguračním souboru říkáme datové pumpě, aby načetla data ze souboru zdroj.txt, který obsahuje 3 sloupce oddělené středníkem, a zapsala je do tabulky importovana_data. Výčtem sloupců v kulatých závorkách specifikujeme pořadí sloupců ve zdrojovém souboru a u datumu navíc specifikujeme formát. Konfigurační soubor lze dále rozšířit o sekci OPTIONS, pomocí které specifikujeme chování datové pumpy při importu. Nejčastější konfigurovatelné vlastnosti shrnuje Tabulka 2:    

Tab. 2: - Nejčastěji používané konfigurovatelné vlastnosti SQLLDR

Vlastnost

Význam

SKIP=n

Přeskočit na začátku n řádků (např. vynechat záhlaví)

ERRORS=n

Ukončit import po dosažení n chyb

ROWS=n

Provést commit po importu n řádků

DIRECT=true

Volba rychlejší cesty importu

 

Pokud chceme, aby se při importu ignoroval první řádek v importovaném souboru a aby import skončil při první chybě, vložíme na začátek konfiguračního souboru tento řádek: 

OPTIONS (SKIP=1, ERRORS=0)

Je důležité zmínit, že i v případě, že import skončí chybou, bude proveden commit na úspěšně importované řádky. Toto chování je nepříjemné, pokud importujeme data do neprázdné tabulky, kdy při neúspěšném importu nemůžeme jednoduše vše smazat a začít znovu a zároveň nechceme v cílové tabulce duplicity. V tomto případě se doporučuje nastavit vlastnost ERROR na velmi vysoké číslo, aby došlo ke zpracování všech korektních řádků. Chybové řádky budou aplikací zapsány do soubor.bad souboru, čímž vznikne sekundární importní soubor, který pro vyřešení příčin chyb můžeme opět zkusit importovat. Tuto iteraci opakujeme, dokud se nám nepodaří importovat všechny řádky. Druhou možností je provádět import do prázdné pracovní tabulky a teprve z ní pomocí SQL příkazu INSERT SELECT převést data do cílové tabulky. U extrémně velkých souborů, kdy samotný import trvá hodiny a opakování importu je časově neefektivní, si při předčasném ukončení importu pomáháme nastavením parametru SKIP, který nastavujeme za poslední úspěšně importovaný řádek, případně těsně za detekovaný chybový řádek.

Pomocí přepínače DIRECT řídíme metodu importu. Výchozí metoda (DIRECT=false) je metoda INSERT příkazů, kdy SQLLDR ze vstupního souboru sestavuje INSERT příkazy, které spouští. Touto metodou lze bez problémů zpracovat soubory v řádu sta tisíc řádků, ale v případě větších souborů je již tato cesta časově náročná. U velkých souborů se doporučuje využít přímou cestu importu (DIRECT=true). Tato varianta je rychlejší, nicméně nekontrolují se některá integritní omezení a může se tak do databáze dostat řádek, který by při standardní cestě byl odmítnut. U velkých souborů je proto zcela na místě provádět import do pracovních tabulek, zde provést nezbytné kontroly a teprve následně přenášet data do cílových tabulek.

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity