SQLLoader Tutorial

Das hier angeführt Tutorial beschreibt den Import von Datensätzen mittels Verwendung des SQLLoaders, wobei hier nur beispielhaft die Befüllung der Person-Tabelle angeführt ist. 
 
Beispiel ER-Diagramm
Abbildung 1: Beispiel ER-Diagramm

import_person.dat

Zu aller erst benötigt man ein Datenfile (.dat), in welchem die einzelnen Datensätze (Zeilen) und deren Attribute (mittels Seperator abgeteilte Spalten) abgebildet sind. Dieses entspricht mehr oder weniger einer herkömmlichen CSV Datei und sieht für die Tabelle Person etwa wie folgt aus: 
 
123410101980; "Peter Paul"; "Beran"; "Wien"; 1010; "Rathausstrasse 19/9/1a"; "10-OCT-80"; "Wien"
987601021979; "Jürgen"; "Mangler"; "Wien"; 1010; "Rathausstrasse 19/9/1b"; "01-FEB-79"; "Bregenz"
 
Wie hier gut zu sehen ist wird auch der PK (SVNR) händisch/manuel vergeben.  
 
In einem anderen Fall (etwa bei der Abteilung) könnte es sein, dass man für die Vergabe des PK einen "autoincrement"-Trigger erstellt hat und will, dass dieser den Spaltenwert für die PK-Spalte vergibt. Für diesen Fall lässt man einfach die erste Spalte leer und fängt gleich mit dem Inhalt der zweiten Spalte an. 

import_person.ctl (Control File für SQLLoader)

Nun benötigt man eine s.g. Control Datei, welche angiebt wie das weiter oben angeführte Datenfile zu interpretieren ist. D.h. in welchem Zeichensatz (hier UTF8) die Daten im .dat File abgespeichert sind, wie das Datenfile heißt, ob die Daten neu eingefügt werden sollen oder einfach angehängt (vgl. APPEND) werden sollen, welche Tabelle betroffen ist (hier Person) und welche Spalten im .dat File enthalten sind (und in welcher Reihenfolge diese Spalten angegeben sind. 
 
LOAD DATA
CHARACTERSET UTF8
INFILE 'import_person.dat'
APPEND
INTO TABLE Person
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
(svnr, vorname, nachname, ort, plz, strasse, gebdatum, gebort)

import.sh (Scriptfile zum Starten das SQLLoader)

Zu guter Letzt benötigt man nun noch den SQLLoader Command Line Befehl zum Durchführen der Befüllung der Tabelle. Sollte man mehrere Tabellen "auf einen Rutsch" befüllen wollen so ist es meist ratsam ein Skript für die Durchführung aller Imports zu verwenden. 
 
sqlldr userid=<USERNAME> control=import_person.ctl log=import_person.log
 
Dieser Befehl gibt nun an welcher Oracle Datenbank Benutzer (<USERNAME>) den SQLLoad-Prozess startet und welche Daten (spezifiziert durch Control-File) importiert werden sollen. 
 
Also wenn man nun die drei beschriebenen Dateien in einem Verzeichnis am ALMIGHTY liegen hat, muss noch gewährleistet werden, dass das import.sh File auch ausführbar ist (also die x-Berechtigung gesetzt ist). 
 
-rw-r--r--   1 beran    staff        195 Dec 18 18:50 import_person.ctl
-rw-r--r--   1 beran    staff        199 Dec 18 18:50 import_person.dat
-rw-r--r--   1 beran    staff         68 Dec 18 18:50 import.sh
 
Zum Hinzufügen der Ausführungsberechtigung genügt ein: 
 
chmod u+x import.sh
 
Danach kann man den Import-Prozess starten, wobei nach Eingabe des Oracle Passworts (Achtung <USERNAME> muss natürlich durch den eigenen Oracle Benutzernamen ersetzt werden) auch gleich ein Statusbericht des Import-Prozesses mittels SQLLoader Tool erscheint: 
 
[beran@almighty] ./import.sh
Password:
 
SQL*Loader: Release 10.2.0.1.0 - Production on Thu Dec 18 18:55:17 2008
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
Commit point reached - logical record count 2
 
Wie man hier sieht wurden die zwei angeführten Datensätze richtig importiert und der Import war somit erfolgreich. Zur Sicherheit kann man auch noch einmal einen Blick in das Logfile wagen (import_person.log), welches einen noch genaueren Statusbericht des gerade durchgeführten Imports enthält. Zudem werden im import_person.bad File alle nicht richtig importierten Datensätze noch einmal extra gelistet. 

SQLLoader Scripts

Letzte Änderung: 18.12.2008, 19:10 | 575 Worte