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):
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
- Leseberechtigung erteilen
Nun definieren wir unsere External Table:
- External Table MD_ITEM_DELTA definieren
Anschließend kann man über ein entsprechendes Select die Daten in der Datenbank weiterverarbeiten.
Ausgabe:
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
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