executeBatch() - Inserts trotz Fehler weitermachen

Status
Nicht offen für weitere Antworten.
M

matthias_

Gast
Hallo...

Habe folgendes Problem...Versuche gerade Datensätze mittels executeBatch() in eine Postgres DB zu schreiben (JDBC-Treiber: 8.0-314 JDBC 3)...funktioniert auch alles so weit...

Was mich jetzt stört ist, dass der Treiber nach dem ersten fehlerhaften Statement eine Exception schmeisst und alle darauffolgenden Statements, obwohl sie keinen Fehler erzeugen würden nicht mehr reingeschrieben werden...

Welche Möglichkeiten gibts da für micht? anderer Treiber? oder kennt jemand eine andere Lösung?

Danke im Vorraus!

mfg Matthias
 

Ilja

Bekanntes Mitglied
fange die exception ab, verbinde neu und mach ab der nächten stelle im batch weiter...
 

bronks

Top Contributor
@matthias:
executeBatch() verwendet man güstigerweise in Transaktionen, weil es genau darauf ankommt, daß eine Exception kommt und der ganze Kram verworfen wird.

Irgendwie hab ich einen spannenden Verdacht, wenn ich Deinen Post lesen. Was willst Du konkret erreichen und warum verwendest Du dafür executeBatch()?
 
M

matthias_

Gast
hmm...ja das ist mir schon klar...ich lese in meinem Programm daten aus XML-Files heraus und schnipsel dann daraus Datensätze zusammen...Jedoch sind diese XML-Files teilweise so scheisse aufgebaut, dass teilweise Daten drinstehen die gar nicht reingehören...bisher habe ich aus faulheit alles in ne .sql datei rausschreiben lassen und das ganze dann auf einmal reingeschrieben auch wenn er ein paar fehler in der log anzeigt...

jetzt mit dem JDBC treiber dachte ich executeBatch wäre sinnvoll da ich eine Menge-Datensätze auf einmal reinschreiben kann und das doch sicherlich Performance-Vorteile bringt oder?
 

RicoSoft

Aktives Mitglied
Ich würde sagen, die Performance-Gewinne kriegst Du, indem Du
  • transaktionen verwendest
    mit preparedStatements arbeitest
So kannst Du auch die Fehler sauber auffangen und zwischenspeichern oder was auch immer damit machen (demjenigen, der das XML-File geschrieben haben, zurückschicken und ihm gleich noch einmal etwas über die Idee hinter XML schreiben :) )
 
G

Gast

Gast
zu den transaktionen...steht executeBatch für ne transaktion? oder muss man da ein "BEGIN;" executen und nachher commiten?

ja preparedStatements scheinen mir in diesem Fall auch die bessere Lösung zu sein...

Achja und zu dem XML-File...das wurde von dem Datenmodellier-Programm ERWin 4 generiert (ich denke die haben dieses XML-Export-Feature am letzten Tag noch schnell hinzugefügt :))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S CSV Datein in DB übernehmen:PreparedStatement bzw executeBatch() zu langsam Datenbankprogrammierung 11
P MySQL PreparedStatement vs. StoredProcedure vs. executeBatch Datenbankprogrammierung 1
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
M werden executeBatch()-commandos automatisch commitet ? Datenbankprogrammierung 8
L Oracle SQL Inserts via Client vs SQL Datei via ScriptRunner Datenbankprogrammierung 6
G HSQLDB Inserts/Updates sind nach Neustart der Anwendung Datenbankprogrammierung 1
J Mehrere Inserts bei Fehlschlag abbrechen Datenbankprogrammierung 2
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M SQL inserts bringen Router zum Absturz Datenbankprogrammierung 8
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
rambozola große anzahl an inserts bei oracle db unperformant Datenbankprogrammierung 15
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
E ClassNotFoundException bei verschiedenen MS SQL Treibern trotz Classpath-Eintrag Datenbankprogrammierung 5
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
S Firebird NoClassDefFoundError trotz erfolgreichem Class.forName(...) unter Linux Datenbankprogrammierung 5
V 3x selbes Ergebnis trotz 3x verschiedene Ergebnisse? Datenbankprogrammierung 2
A NullPointerException trotz getConnection Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben