Wie importiert man eine x.csv Datei via PL SQL nach Oracle?

1 Antwort

Der einfachste Weg Daten in eine Oracle Datenbank zu bekommen ist PLAIN-SQL. Haben Sie jedoch viele Daten zu importieren, wird es über normale SQLs lange dauern. Bei der Oracle-Installation ist bereits das Import-Utility sqlldr mit dabei, welches CSV-Dateien einlesen kann. Dieses ist sehr hilfreich, wenn viele Daten beispielsweise nur als Exceldatei vorliegen.

Excel nach CSV exportieren

Von Excel aus kann relativ problemlos eine CSV-Datei erzeugt werden. Dabei ist aber darauf zu achten, dass in der CSV-Datei (beispiel.csv) hinter dem letzten Feld auch das Trennzeichen (z.B. Semikolon) seht:

Meier;Max;Hauptstraße;5;01.01.1980;

Schulz;Sascha;Nebenstraße;10;03.03.1970;

Schmidt;;Nebenstraße;14;03.03.1980;

Datenstruktur in Oracle

Die Daten aus der obigen CSV-Datei sollen in folgende Tabelle importiert werden:

CREATE TABLE adressbuch

(name VARCHAR(255),

vorname VARCHAR(255),

strasse VARCHAR(255),

hausnummer NUMBER,

geburtstag DATE);

sqlldr Control Script

Damit die Oracle Importsoftware sqlldr die Daten aus der CSV-Datei in die korrekte Tabelle adressbuch importieren kann benötigt sqlldr ein Control-Script. Dieses legt fest, welcher Wert einer Zeile in welche Tabellenspalte gespeichert werden soll und welches Datenformat die Daten haben. Das ctl-Script (beispiel.ctl) sieht für das obige Beispiel wie folgt aus:

load data

infile 'beispiel.csv'

append into table adressbuch

fields terminated by ';'

(name char ,

vorname char nullif vorname = 'unbekannt',

strasse char,

hausnummer,

geburtstag date "dd.mm.yyyy")

Die Angabe nullif sagt aus, dass wenn kein Vorname gegeben ist, der Wert “unbekannt” in die Spalte geschrieben werden soll.

Import durchführen

Um den Import zu starten müssen sich die beispiel.ctl und beispiel.csv im gleichen Verzeichnis befinden. 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=beispiel.ctl

Ein Logfile wird bei Ausführung mit dem Namen beispiel.log erzeugt, welches auf evtl. Fehler hinweist bzw. den Erfolg protokolliert.

Quelle: http://www.christian-klisch.de/csv-in-oracle-importieren.html

Ich nehme an, das sollte dir helfen.

Schöne Grüße