LOAD DATA INFILE mit Oracle

Lia

Bekanntes Mitglied
Hi ihr lieben,

habe da Mal wieder eine Frage xD
Und zwar würde ich gerne Daten in eine CSV laden. Ich habe den Befehl "Load Data INFILE" genutzt aber der funktioniert für Oracle nicht, habe auch schon herausgefunden, dass es hierfir den SQLLoader gibt. Nur weiss ich nicht wie ich es genau in meine Java Datei einbauen soll.

Habe zurzeit

LOAD DATA INFILE /path/to/file REPLACE INTO TABLE....

Das würde ich gerne so umschreiben das es für die Oracle DB funktioniert.

LG und danke :)
 

Lia

Bekanntes Mitglied
@mihe7 guten Morgen :) danke.

Aus einer Csv lesen und in eine Tabelle einlesen. Wiederkehrend. Genau gleiche Struktur und teste erstmal lokal
 

Lia

Bekanntes Mitglied
Habe zur Zeit eine Datei test.sql im Java Projekt eingebunden

LOAD DATA LOCAL INFILE 'test.csv' REPLACE INTO TABLE temp_test...
 

mihe7

Top Contributor
Dazu müsstest Du SQL Loader aufrufen, was voraussetzt, dass dieses Tool (inkl. etwaiger zusätzlicher Abhängigkeiten) auf dem Rechner installiert ist, auf dem die Java-Anwendung läuft. Würde ich nicht machen.

Auch die Funktionen, die die DB selbst anbietet, funktionieren, wenn ich mich recht entsinne, nur mit Dateien, die sich auf dem Server befinden. Würde ich nicht machen.

Besser wäre es, das in Java zu haben. Je nachdem, wie Deine CSV aussieht, hast Du das schnell selbst oder unter Zuhilfenahme einer CSV-Bibliothek erledigt und bist dann weitestgehend von der DB unabhängig.
 

Lia

Bekanntes Mitglied
Vielen Dank für deine Antwort:)

Was kann ich da für eine Bibliothek nutzen ? Csvloader? Hatte da was gelesen .. oder ist es was anderes ?
 

Dukel

Top Contributor
Ja genau, aber wie kann ich das so umschreiben , dass ich es für eine Oracle DB ausführen kann?
Entweder startest du SQL*Loader und übergibst die entsprechenden Parameter oder du nutzt andere SQL Befehle und schickst dies direkt an Oracle. Aber den Befehl so umschreiben wird nicht gehen.

 

Lia

Bekanntes Mitglied
@Dukel vielen Dank für deine Antwort. Dieser Load data INFILE Befehl steht bei mir in einer ctl File. Ich wollte alles in eine .sql Datei packen aber da es mit dem Load data INFILE fur die oracle nicht funktioniert. Geht es nicht.. dh muss ich diese File über einen process builder aüsfuhren ? Oder wie genau ? Habe auch etwas über sqlcl gelesen ginge es auch mit sowas ? Sorry wirklich für solche Fragen
 

Dukel

Top Contributor
Wie gesagt, es gibt mehrere Möglichkeiten. Wenn du das ganze mit dem SQL*Loader machen willst musst du diesen starten (mit Process Builder), bedingt aber, dass der installiert ist.
Wenn du es mit SQL Mitteln machen willst, dann wie in dem Link beschrieben z.B. mit den Temporären Tabellen.
SQLCL ist, wenn ich das richtig gegoggelt habe, ein CLI Tool um SQL Befehle und Scripte an Oracle zu schicken, das geht aber auch mit Java selbst (JDBC) und du bist nicht von dem Tool abhängig.
 

Lia

Bekanntes Mitglied
Vielen Dank !

Also habe halt eine .sh Datei in dieser sh datei werden halt 4 Befehle aufgerufen 3 davon sind .sql Dateien und eine .ctl .. ich wollte es halt nicht mehr über einen process builder machen also keine shell Scripte mehr aufrufen , sondern direkt über Java.. die sql Dateien sind ja kein Problem mir diese ctl File
 

Dukel

Top Contributor
Dann musst du das selber implementieren. Entweder die CSV als SQL Datei (in lauter Inserts) umschreiben (z.B. mit Java) oder mit den externen Tabellen.
 

Lia

Bekanntes Mitglied
Du meinst das :

LOAD DATA INFILE test.csv
REPLACE INTO TABLE temp_test
FIELDS TERMINATED BY ',' OPTIONALLY BY '"'
TRAILING NULLCOLS (TEST_ID, TEST_NAME)

Habe das in der ctl File.. das umschreiben ??
 

mihe7

Top Contributor
"Umschreiben" ist der falsche Ausdruck. Du musst die Funktionalität selbst in Java implementieren. Dazu besorgst Du Dir am besten eine Bibliothek, mit der Du einfach CSV-Dateien einlesen kannst und dann schreibst Du einfach entsprechende INSERT-Statements (JDBC).
 

Lia

Bekanntes Mitglied
Ok Alles klar :) aber was mache ich mit den anderen befehlen wie das TRAILING NULLCOLS oder das mit dem REPLACE INTO TEMP_TESTTBL..
 

mihe7

Top Contributor
TRAILING NULLCOLS sorgt ja nur dafür, dass eine CSV-Datei gelesen werden kann, bei der wenigstens zwei Datensätze eine unterschiedliche Anzahl an Spalten haben. Wenn Du also eine CSV-Datei
Code:
header1,header2,header3
1,2,3
4,5
6,7,
8,9,10
hast, dann wird die Datei eingelesen und die fehlenden Werte (nach 4,5 und 6,7) durch NULL ersetzt.

Das wäre Aufgabe der CSV-Lib.

Und REPLACE INTO kannst Du nachbilden, indem Du z. B. die betreffende Zeile vor dem Einlesen löschst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dimax MySQL LOAD DATA INFILE -id aus dem Code und Rest aus dem File. Datenbankprogrammierung 5
K MySQL Load Data InFile Datenbankprogrammierung 7
P Wie realisiert man JDBCTemplate load als allgemein am besten? Datenbankprogrammierung 5
D Jdbc: Unable to load Driver! Datenbankprogrammierung 11
T Cast-Fehler: Spring Data exists.... boolean??? Datenbankprogrammierung 1
sonalim21 Data from one Excel workbook in Alteryx Datenbankprogrammierung 0
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
B MySQL Data Tools Plattform - "Database Connections" findet den Treiber nicht Datenbankprogrammierung 1
zhermann Data truncation: Incorrect date value: 'null' for column Datenbankprogrammierung 31
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
E Data truncation Incorrect datetime value Datenbankprogrammierung 2
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
E falscher Befehl executeQuery() issue data Datenbankprogrammierung 12
I java.sql.SQLException: No data found Datenbankprogrammierung 3
Dragonfire Entwurfsfragen zur Anbindung an einer MySQL DB - Klassenstruktur zum Data Model Datenbankprogrammierung 5
M Mit Java Data Objects Daten in einer MySQL-Datenbank manipul Datenbankprogrammierung 9
M java.sql.SQLException: No data found Datenbankprogrammierung 9
T Problem mit Data truncation Datenbankprogrammierung 3
G Data Truncated Datenbankprogrammierung 23
R MySQL denies access to data source - java.sql.SQLException Datenbankprogrammierung 14
G NULL-data processing. Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben