R
roli_7
Gast
Hallo allerseits.
Ich muss aus einer Excel-Datei Daten in eine DB einlesen. Als DB wird die HSQLDB 1.8 im "In-Prozess"-Mode eingesetzt. Nun, das hat auch funktioniert. Jedoch als ich zum ersten Mal die Testdaten geladen habe, musst ich zu meiner grossen Enttäuschung feststellen, dass für das Laden von Daten ca. 25 Minuten benötigt wurden.
Die Excel-Datei hat etwas über 17000 Zeilen, wobei pro Zeile etwa 19 Spalten enthalten sind. Ich dachte zuerst, dass das Lesen aus der Excel-Datei so langsam ist (jexcel.api wird eingesetzt) und habe es getestet. Es hat sich aber schnell gezeigt, dass das Lesen aus der Excel-Datei nur einige wenige Sekunden benötigt. Weitere Tests haben gezeigt, dass die Codezeile
an sich der Zeitfresser ist.
Ich habe danach weiter optimierten probiert, indem ich mit
anstatt
gearbeitet habe. Ausserdem habe ich erst nach 1000 Statements das
aufgerufen und commit gemacht. So konnte ich das Laden von Daten in etwa einer Hälfte der ursprünglichen Zeit erledigen (etwa 12 Minuten). Für meine Begriffe ist das aber weiterhin sehr lange Zeit. Hat jemand damit Erfahrungen gemacht? Ist das wirklich so? Oder, könnte man da weiter noch optimieren?
Meine Maschine ist zwar nicht die schnellste: habe nur 1 GB RAM und die Applikation wird aus eclipse ausgeführt. Der Speicher ist sicher eher knapp. Aber, trotzdem finde ich es etwas beunruhigend, dass es so lange braucht.
Danke für jeden Hinweis bzw. Meinung.
Ich muss aus einer Excel-Datei Daten in eine DB einlesen. Als DB wird die HSQLDB 1.8 im "In-Prozess"-Mode eingesetzt. Nun, das hat auch funktioniert. Jedoch als ich zum ersten Mal die Testdaten geladen habe, musst ich zu meiner grossen Enttäuschung feststellen, dass für das Laden von Daten ca. 25 Minuten benötigt wurden.
Die Excel-Datei hat etwas über 17000 Zeilen, wobei pro Zeile etwa 19 Spalten enthalten sind. Ich dachte zuerst, dass das Lesen aus der Excel-Datei so langsam ist (jexcel.api wird eingesetzt) und habe es getestet. Es hat sich aber schnell gezeigt, dass das Lesen aus der Excel-Datei nur einige wenige Sekunden benötigt. Weitere Tests haben gezeigt, dass die Codezeile
Code:
pStm.executeUpdate();
Ich habe danach weiter optimierten probiert, indem ich mit
Code:
pStm.addBatch();
Code:
pStm.executeUpdate();
Code:
pStm.executeBatch();
Meine Maschine ist zwar nicht die schnellste: habe nur 1 GB RAM und die Applikation wird aus eclipse ausgeführt. Der Speicher ist sicher eher knapp. Aber, trotzdem finde ich es etwas beunruhigend, dass es so lange braucht.
Danke für jeden Hinweis bzw. Meinung.