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



## Thomas Darimont (3. März 2012)

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):

```
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

```
create or replace directory DATA_IN as 'D:\temp\data';
```

- Leseberechtigung erteilen

```
GRANT READ on directory "DATA_IN" to TRAINING ;
```

Nun definieren wir unsere External Table:

- External Table MD_ITEM_DELTA definieren


```
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.

```
select * from md_item_delta;
```


Ausgabe:

```
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


----------

