
Oracle
Vor einem Jahr habe ich gezeigt, wie Sie den Inhalt einer CSV Datei mittels SQL-Loader in eine Oracle-Datenbanktabelle importieren können. Vor einigen Tagen hatte ich eine ähnliche Aufgabe bearbeitet, jedoch mussten in dem Fall neben den reinen CSV Daten auch Binärdaten in die Datenbank importiert werden. Hier speziell Bilder in ein Feld vom Datentyp CLOB.
Im folgenden zeige ich die wichtigsten Schritte für einen erfolgreichen Import.
CSV Datei
In meinem Beispiel besteht die CSV Datei (bilder.csv) aus dem beschreibenden Namen des Bildes und des Pfads zur Binärdatei:
Hund;C:\Bilder\hund.jpg;
Katze;C:\Bilder\katze.jpg;
Elefant;C:\Bilder\elefant.jpg;
Datenstruktur in Oracle
In Oracle habe ich folgende Tabelle angelegt:
CREATE TABLE bilder
(name VARCHAR(255),
binary CLOB);
Das Feld binary vom Datentyp CLOB nimmt die Binärdaten auf.
sqlldr Control Script
Für den Import benötigt das Tool sqlldr noch ein Control-Script, um die einzelnen CSV Felder in der Tabelle bilder zuordnen zu können. Das ctl-Script (beispiel.ctl) sieht für das obige Beispiel wie folgt aus:
load data
infile 'bilder.csv'
append into table bilder
fields terminated by ';'
(name char ,
dummy filler char(40),
binary LOBFILE (dummy) terminated by EOF)
Die Anweisung dummy filler ist eine Hilfe, um die hinter dem im CSV File genannten Pfad befindliche Binärdatei zu importieren.
Import durchführen
Um den Import zu starten müssen sich die bilder.ctl und bilder.csv im gleichen Verzeichnis befinden. Die Bilder müssen unter dem genannten Pfad vorhanden sein. Folgender Kommandozeilenbefehl startet den Import und fügt die Daten aus der CSV Datei in der Tabelle an:
LinuxServer:/root/ora_import # sqlldr user/pw@ora_sid control=bilder.ctl
Den Import können Sie natürlich auch unter Windows ausführen und dennoch die Binärdaten in eine Remotedatenbank importieren. Dazu müssen Sie für ora_sid den Service aus Ihrer tnsnames.ora Datei eintragen, welche den Hostnamen oder IP-Adresse des Datenbankrechners definiert.



Diskussion
Keine Kommentare für “Binärdaten in Oracle importieren”