Schönen guten Tag,
ich habe ein Program, was einen Massenupload aus einer CSV Datei in eine SQL 2005 DB durchführt. Dafür verwende ich PreparedStatements mit der Methode addBatch. Wenn eine gewissen Anzahl erreicht ist, führe ich das PreparedStatement aus.
Ich verwende die BatchUpdateException, um Fehler beim ExecuteBatch abzufangen und dann die Anzahl der verarbeiteten Statements zu ermitteln, um später eine Log wegzuschreiben.
Das funktioniert auch super z.B. wenn der Wert aus der Datei größer ist als das DB Feld (varchar).
Wenn aber ein Datumswert im Format yyyyMMdd übergeben werden soll und der Wert aus der CSV Datei wie folgt aussieht:
kommt leider eine SQLServerException und somit bin ich nicht mehr in der Lage, die schon verarbeiteten PreparedStatements zu zählen.
Kennt einer dieses Problem? Oder weiß eine Lösung, wie ich auch mit einer SQLServerException die verarbeiteten PreparedStatements zählen kann?
Vielen Dank im Voraus. Ich hoffe, ich habe es nicht zu kompliziert erklärt.
Sven
ich habe ein Program, was einen Massenupload aus einer CSV Datei in eine SQL 2005 DB durchführt. Dafür verwende ich PreparedStatements mit der Methode addBatch. Wenn eine gewissen Anzahl erreicht ist, führe ich das PreparedStatement aus.
Java:
PreparedStatement pst = null;
...
try
pst = con.prepareStatement(pstmt.toString());
...
pst.addBatch();
pst.clearParameters();
...
// Execute batch and commit changes after we processed
// enough data, only.
if (numExecutedStatements % numBatchRows == 0) {
pst.executeBatch();
pst.clearBatch();
con.commit();
}
...
} catch (BatchUpdateException e) {
int[] updateCounts = e.getUpdateCounts();
...
} catch (SQLException e) {
...
}
Ich verwende die BatchUpdateException, um Fehler beim ExecuteBatch abzufangen und dann die Anzahl der verarbeiteten Statements zu ermitteln, um später eine Log wegzuschreiben.
Das funktioniert auch super z.B. wenn der Wert aus der Datei größer ist als das DB Feld (varchar).
Wenn aber ein Datumswert im Format yyyyMMdd übergeben werden soll und der Wert aus der CSV Datei wie folgt aussieht:
Code:
00101129 // sollte eigentlich 20101129 sein --> Datenfehler
Kennt einer dieses Problem? Oder weiß eine Lösung, wie ich auch mit einer SQLServerException die verarbeiteten PreparedStatements zählen kann?
Vielen Dank im Voraus. Ich hoffe, ich habe es nicht zu kompliziert erklärt.
Sven