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 přes externí tabulky (ORACLE)

Logo Matematická biologie

Import přes externí tabulky (ORACLE)

Jako alternativu při importu dat z textového souboru můžeme v případě databáze ORACLE použít techniku označovanou jako externí tabulka (external table). Tato metoda je vhodná, pokud provádíme import dat v definované struktuře opakovaně. Podstatou této metody je, že se díváme na importní textový soubor jako na tabulku, která je přímo součástí databáze, jde o databázový objekt. Tento typ objektu vytvoříme pomocí příkazu CREATE TABLE ORGANIZATION EXTERNAL. V tomto příkazu popíšeme umístění a strukturu textového souboru a s vytvořeným objektem můžeme následně pracovat jako s běžnou interní tabulkou pomocí příkazu SELECT. Platí zde však jistá omezení, mezi hlavní patří skutečnost, že zdrojový soubor je nutné umístit přímo na databázový server do vyhrazeného adresáře (naproti tomu import přes SQLLDR můžeme provádět odkudkoliv, kde máme nainstalovaného ORACLE klienta). Dále oproti interní tabulce nelze použít příkazy INSERT, UDATE, DELETE pro manipulaci s daty uvnitř externí tabulky. Nad externí tabulkou taktéž nelze vytvářet indexy pro optimalizaci vyhledávání.

Abychom mohli používat externí tabulky, musíme mít nejdříve na serveru vytvořený a zpřístupněný importní adresář. Tuto operaci obvykle provádí správce databáze:

CREATE OR REPLACE DIRECTORY

IMPORT_DIR AS

'/home/oracle/import';

GRANT READ, WRITE ON DIRECTORY IMPORT_DIR TO uzivatel;

Do tohoto adresáře nakopírujeme zdrojový soubor a přistoupíme k vytvoření objektu externí tabulky. Syntaxe tohoto příkazu připomíná konfigurační soubor SQLLDR aplikace, nicméně není to to samé. Ukážeme si vzor příkazu pro import souboru s fixní velikostí sloupců (pozicový formát) a vzor pro import souboru, kde sloupce jsou odděleny vybraným oddělovačem. V obou případech zdrojový soubor obsahuje 3 sloupce, jeden číselný, druhý textový, třetí je datum. Pro pozicový soubor s názvem data_fix.txt použijeme následující příkaz:

CREATE TABLE data_fix

(

    cislo      NUMBER,

    jmeno   VARCHAR2(20),

    datum   DATE

)

    ORGANIZATION EXTERNAL (

        TYPE ORACLE_LOADER

        DEFAULT DIRECTORY IMPORT_DIR

        ACCESS PARAMETERS

            (RECORDS DELIMITED BY NEWLINE

                FIELDS (

                    cislo      CHAR(3),

                    jmeno   CHAR(6),

                    datum   CHAR(10) DATE_FORMAT DATE MASK "dd.mm.yyyy"

                 )

            )

     LOCATION ('data_fix.txt')

    );

Příkaz obsahuje dvakrát jména importovaných sloupců, liší se datové typy. V prvním případě jde o definici, jak se na data chceme dívat ze vnitř databáze, v druhém případě za klíčovým slovem FIELDS popisujeme situaci ve zdrojovém textovém souboru. Zde jsou všechny prvky pouze text s vymezenou délkou, proto používáme datový typ CHAR s vymezením délky. V případě datumu doplňujeme specifikaci formátu ve stejné notaci jako v případě funkce TO_DATE.   Po vytvoření externí tabulky si data můžeme prohlédnout běžným SELECT příkazem:

SELECT * FROM data_fix

Pokud jsou sloupce ve zdrojovém souboru definovány pomocí oddělovacího znaku, musíme příkaz pro vytvoření externí tabulky doplnit o specifikaci oddělovače:

CREATE TABLE data_delimited

(

    cislo      NUMBER,

    jmeno   VARCHAR2(20),

    datum   DATE

)

    ORGANIZATION EXTERNAL (

        TYPE ORACLE_LOADER

        DEFAULT DIRECTORY IMPORT_DIR

        ACCESS PARAMETERS

            (RECORDS DELIMITED BY NEWLINE

              FIELDS TERMINATED BY ";"

                 (

                    cislo      CHAR(3),

                    jmeno   CHAR(6),

                    datum   CHAR(10) DATE_FORMAT DATE MASK "dd.mm.yyyy"

                )

            )

        LOCATION ('data_delimited.txt')

    );

Vytvoření objektu externí tabulky nám nebrání manipulovat se zdrojovým souborem. Můžeme ho pomocí nástrojů operačního systému bez problémů nahradit a opětovně použít SELECT příkaz pro prohlédnutí dat. Pokud SELECT příkaz skončí chybou, najdeme bližší vysvětlení v log souboru, který se vytvoří na serveru v importním adresáři. Z uvedeného vyplývá, že externí tabulky jsou užitečným nástrojem pro pravidelně opakovaný import dat, nicméně neobejdeme se bez spolupráce s administrátorem databáze, resp. serveru.

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