[Oracle] Daten aus externen Dateien (CSV, fixe Satzbreite) mit External Tables laden

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier mal ein kleines einfaches Beispiel dazu wie einfach man unter Oracle mit External Tables Daten aus
externen Dateien im CSV Format oder auch mit fixer Datensatzlänge in der Datenbank verfügbar machen kann.

Unsere CSV Datei (md_item_delta.csv) im Verzeichnis (D:\temp\data):
Code:
itemid;itemname;vendorid;vendorname
4711;~  AAAA AAAA  ~;1;~V1~
4712;~B~;2;~V2~
4713;~C~;3;~V3~
4714;~D~;3;~V3~

Dazu muss man in Oracle (wenn man keines der Standardverzeichnisse benutzen kann oder will...)
zunächst ein Verzeichnis registrieren. Aus Sicherheitsgründen erlaubt Oracle nur den Zugriff auf
Verzeichnisse, welche in der Datenbank registriert sind.

- Directory registrieren
SQL:
create or replace directory DATA_IN as 'D:\temp\data';

- Leseberechtigung erteilen
SQL:
GRANT READ on directory "DATA_IN" to TRAINING ;

Nun definieren wir unsere External Table:

- External Table MD_ITEM_DELTA definieren

SQL:
CREATE TABLE "MD_ITEM_DELTA"
  (
    "ITEMID"     VARCHAR2(64 CHAR),
    "ITEMNAME"   VARCHAR2(128 CHAR),
    "VENDORID"   VARCHAR2(64 CHAR),
    "VENDORNAME" VARCHAR2(128 CHAR)
  )
  ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_LOADER 
	DEFAULT DIRECTORY "ORACLECLRDIR" 
	ACCESS PARAMETERS ( 
		RECORDS DELIMITED BY NEWLINE SKIP 1 -- Erste Kopfzeile überspringen, 
		FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY "~" --Werte gerteent mit ; Zeichenfolgen mit Tilde~ umschlossen
		LRTRIM --Whitespaces vor und hinter Zeichenfolgen entfernen
	) 
	LOCATION ( "DATA_IN":'md_item_delta.csv' )
  );

Anschließend kann man über ein entsprechendes Select die Daten in der Datenbank weiterverarbeiten.
SQL:
select * from md_item_delta;


Ausgabe:
Code:
ITEMID	ITEMNAME	VENDORID	VENDORNAME
4711	AAAA AAAA	1			V1
4712	B			2			V2
4713	C			3			V3
4714	D			3			V3

Hier noch ein paar weitere Artikel zum Thema:
http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/external_tables/index.html
http://docs.oracle.com/cd/E11882_01/server.112/e10701/et_concepts.htm

Gruß Tom
 

Neue Beiträge

Zurück