ich möchte aus einer TXT-Datei mit pl/sql in die Tabelle (Oracle
Datenbank 10g) Daten schreiben. Die Werte in Datei durch Leerzeichen
und TAbs getrennt. Wie soll ich am besten vorgehen und was ist hier
zu beachten
Ich bedanke mich im Voraus
Es gibt zwei Möglichkeiten:
- Das utl_file package, damit kannst du auf die Datei zugreifen und kannst die Daten von Hand auslesen,
- External Table. Halte ich für wesentlich geschickter. Du legst eine Tabelle an, deren Daten in der Datei liegen, die du aber innerhalb der Datenbank als ganz normale Tabelle ansprechen kannst. Für die Definition des Formates der Datei wird die SQL-Loader Syntax verwendet. Details findest du in der Doku, oder hier auf nachfrage.
Jens
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
ich möchte aus einer TXT-Datei mit pl/sql in die Tabelle
(Oracle
Datenbank 10g) Daten schreiben. Die Werte in Datei durch
Leerzeichen
und TAbs getrennt. Wie soll ich am besten vorgehen und was ist
hier
Hallo, du kannst im Oracle eine External Table definieren, und diese dann in eine „normale“ Oracle Tabelle wandeln. Ich gebe dir ein Beispiel für solch eine Tabellendefinition. Die CSV Datei muss dafür aber auf den DB Server liegen, und du musst die Berechtigung haben, ein Directory Objekt zu erstellen.
- Directory Objekt erstellen :
CREATE OR REPLACE DIRECTORY MY_DIR as ‚/usr/data/‘
/
- Externe Tabelle definieren :
CREATE TABLE m_dataload.ext_region
(region VARCHAR2(10),
beschreibungd VARCHAR2(100),
beschreibungf VARCHAR2(100),
beschreibungi VARCHAR2(100))
ORGANIZATION EXTERNAL (
DEFAULT DIRECTORY MY_DIR
ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE
BADFILE ‚regionen.bad‘
LOGFILE ‚t.log_xt‘
READSIZE 1048576
FIELDS TERMINATED BY „;“ OPTIONALLY ENCLOSED BY ‚?‘ LDRTRIM
REJECT ROWS WITH ALL NULL FIELDS
(REGION CHAR(255)
TERMINATED BY „;“ OPTIONALLY ENCLOSED BY ‚"‘,
Beschreibungd CHAR(255)
TERMINATED BY „;“ OPTIONALLY ENCLOSED BY ‚"‘,
Beschreibungf CHAR(255)
TERMINATED BY „;“ OPTIONALLY ENCLOSED BY ‚"‘,
Beschreibungi CHAR(255)
TERMINATED BY „;“ OPTIONALLY ENCLOSED BY ‚"‘))
LOCATION (
MY_DIR:‚regionen.csv‘
)
)
REJECT LIMIT UNLIMITED
/
- In meinem Beispiel heisst das CSV File Regionen, die erste Zeile beinhaltet die Spaltennamen (4 mal)
Wenn es geklappt hat, kannst du mit …
CREATE TABLE my_table as select * from m_dataload.ext_region
/
… Die Daten aus der externen Tabelle in eine Oracle Tabelle importieren
Ich hoffe, dass hilft (Du musst die ANgaben für Trennzeichen für deinen Fall anpassen)…