Externer DB-Prozess zu schnell?

Status
Nicht offen für weitere Antworten.

higgy0815

Mitglied
Hallo,

ich lade über einen Import-Befehl Daten in eine DB2 über einen externen Prozess:
Java:
Runtime rt = Runtime.getRuntime();
pr = rt.exec("db2cmd.exe -i c:/abc/db2_import.bat");
pr.waitFor();

Die Batch-Datei hat folgenden Inhalt:
Code:
DB2 connect to ... user ... using ...
DB2 IMPORT FROM C:/test.csv OF DEL MODIFIED BY COLDEL; METHOD P (1,2,4,6,8,9,10,3,5) INSERT INTO TABLE1(A,B,C,D,E,F,G,H,I,J)
DB2 QUIT
EXIT

Wie bekomme ich in eine Spalte K in Table1 einen Wert, der nicht in der Textdatei enthalten ist? Und wie kann ich an einen Wert in der Textdatei z.B. ein "A" voranstellen?

Nun da ich diese Fragen noch nicht gelöst habe (Könnt Ihr mit weiterhelfen?), mache ich natürlich Update-Abfragen im Anschluss... Ich möchte den Inhalt der Spalte K damit setzen.
Hier ist jedoch das Problem, dass das Update nichts macht, d.h. der pr.waitFor() oben bringt meiner Ansicht nach nichts.
Nur nach einem schmutzigen "Thread.sleep(2000)"-Aufruf würde es funktionieren, doch ist dies nicht zuverlässig, da ja die Import-Datei beliebig groß sein kann und 2 Sekunden vielleicht auch nicht ausreichen.

Wie kann man sonst die Java-Anwendung vor dem Update ordentlich warten lassen?
Und noch besser: Komme ich um den externen Aufruf umher und wie? Die Java/ODBC-Schnittstelle scheint den Import bzw. Load-Befehl zu ignorieren...

Vielen Dank im voraus für die Antworten,
Gruß
 

sparrow

Top Contributor
Einfachste und unabhängigste Möglichkeit:

die .csv im Java-Programm durchlaufen und die entsprechenden Inserts in die Tabelle vornehmen.

Das hier wirkt auf mich ausgesprochen dirty.
 

higgy0815

Mitglied
Klar ist das eine Möglichkeit.
Aber CSV parsen und für jede Zeile ein Insert absetzen ist doch recht zeitintensiv.
Zu was gibt einen Import-Befehl?
 
S

SlaterB

Gast
CSV ändern und wieder abspeichern/ kopieren und das externe Programm auf die geänderte Datei loslassen
 

higgy0815

Mitglied
Hab's nach dem letzten Vorschlag realisiert. Funzt und geht recht schnell...
Vielen Dank für eure Antworten.
Das Themas kann geschlossen werden.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben