
A példaprogram használata előtt létre kell hozni egy SOUSER sémát az Oracle adatbázis-rendszerünkben, és fel kell ruházni DBA jogosultsággal. A sémába bejelentkezve le kell viszont futtatni a mellékelt Oracle14.sql nevű parancsállományt a hivatkozott további objektumok létrehozásához.
Az Oracle szerverünk segédprogramjai közt találjuk meg az SQL Loader (SQLLDR.EXE) programot, mely alapértelmezésben a %winroot%:\oracle\ora81\bin\sqlldr.exe elérési útvonalon található. A program segítségével .CTL kiterjesztésű szöveges állományokban tárolt adatokat tölthetünk be a megadott sémába.
A szöveges állomány elején kell megadnunk, hogy milyen DML műveletet kívánunk elvégezni az adott táblán, a megadott adatokkal. A művelet lezajlásának eredményét, valamint a betöltéskor előforduló hibákat egy megadott nevű naplóállományban nézhetjük meg. A naplóállományt nem kell explicit módon létrehoznunk, ezt megteszi helyettünk a segédprogram első alkalommal, amikor azt elindítjuk.
A mellékelt példa futtatása előtt lefuttatott Oracle14.sql parancsállomány létrehoz két adattáblát a SOUSER sémában. A példaprogram segítségével – mely elindítja a sqlldr.exe programot – két kontrol-állományban tárolt adathalmazt vihetünk be EMPLOYEES és DEPARTMENT tábláinkba.
Az SQLLDR.EXE segédprogram indításakor meg kell adnunk néhány parancssori argumentumot, melyek információt adnak a programnak a betöltendő adatokról. Általánosan a következőképen indítható a segédprogram:
sqlldr <felhasználónév/jelszó> control=<kontrolfájl neve> log=<naplófájl neve> bad=<hibás adatokat tartalmazó állomány neve>
A felhasználónév és jelszó a létrehozott SOUSER séma, és a hozzá tartozó jelszó. A CONTROL kulcsszó után kell megadnunk a kontrolállomány nevét, melyben elhelyeztük az adatokat, vagy ezekre egy hivatkozást. A LOG kulcsszó után kell megadnunk a naplófájl nevét, a BAD kulcsszó után pedig egy másik állománynevet, mely tartalmazza az adott process-ben valamilyen hiba miatt be nem olvasott rekordokat. Jelen példánkban a parancssor a következő:
sqlldr souser/souser control=dept_loader.ctl log=loading.log
Az EMPLOYEES táblába beszúrandó adatokat tartalmazó .CTL állomány a következő felépítésű. Kezdjük a fejléccel:
Amennyiben nem a .CTL állományban helyezzük el az adatokat, hanem egy külön állományban (.DAT), akkor annak nevét és elérési útvonalát a ’*’ karakter helyén kell feltüntetnünk.
A következő szakaszban kell megadnunk, hogy milyen műveletet végzünk el:
A REPLACE kulcsszó jelenti az UPDATE műveletet. Amennyiben az APPEND kulcsszót használjuk, akkor INSERT műveletet végzünk úgy, hogy lehetnek rekordok a táblában. Mindennemű kulcsszó elhagyásával az INSERT művelethez üres táblával kell rendelkezzünk.
Megadjuk tábla nevét:
A beszúrandó adatok elhelyezésére vonatkozó instrukciókat:
(EMPNO "myseq.nextval",
EMPNAME POSITION(01:20),
HIRE_DATE "to_date(SYSDATE, 'YY-MM-DD HH24:MI')",
SALARY POSITION(21:30),
OWNER "USER"
)
Létrejött adatbázisunkban egy MYSEQ nevezetű SEQUENCE objektum, melynek segítségével az EMPNO oszlop elemei automatikusan adódnak a rekordokban.
A POSITION kulcsszóval adjuk meg, hogy a következőkben felsorolt adatokat hogyan kell értelmeznie a feldolgozónak. A 01:20 kifejezés azt jelenti, hogy a karakteres formában megjelenő adatokban milyen részlánc jelenti az egyes oszlopok értékeit.
Az adatok a BEGINDATA kulcsszó után következnek:
BEGINDATA
John Smith 120000
Thomas Brown 150000
Fill Man 180000
Látható, hogy a három rekord elemei az EMPNAME és SALARY oszlopok értékeit tartalmazzák, a feldolgozó a meghatározott pozíciótól kezdve olvassa be az egyes értékeket.
A loading.log állományban megtalálhatjuk a művelet leírását, valamint, hogy milyen eredménnyel ért véget a beolvasás.
A DEPARTMENT adattábla kontrol állományának felépítése abban különbözik az EMPLOYEES tábla adatait tartalmazó állomány felépítésétől, hogy itt a rekordok elemei vessző (,) karakterrel vannak elválasztva, és ehhez speciális instrukciót kell adni a betöltő programnak:
...
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(dept position (01:04) char(4),
deptname position (06:27) char(20)
)
begindata
COSC,COMPUTER SCIENCE
ENGL,ENGLISH LITERATURE
MATH,MATHEMATICS
POLY,POLITICAL SCIENCE
A mellékelt program Form-jának fülei alatt ezt követően a FUTTATÁS gombokkal indítható a kontrol állományok betöltése, majd a FRISSÍTÉS gombokkal jeleníthetjük meg a táblába bekerült adatok rekordjait.