Ich habe nach einer Möglichkeit gesucht mehrere zehntausend SQL-Statements (Inserts und Updates) in eine Oracle-Datenbank zu schreiben. Da copy-paste wegen der Größe der Statement-Datei nicht in Frage kommt habe ich versucht die Daten mit einem Java-Programm über JDBC (Oracle Thin Client Driver) in die DB zu schreiben, circa so:
Statement s = dbConnection.createStatement();
while (noch statements übrig) {
[INDENT]for(100 sql-Statements) {
[INDENT]s.addBatch(sqlStatement)[/INDENT]
}
s.executeBatch;
s.clearBatch;[/INDENT]
}
Dabei bekomme ich allerdings nicht nachvollziehbare SQL-Fehler (ORA-1401: Inserted Value too long for column, ist aber definitiv nicht der Fall!, genaue Fehlermeldung am Ende des Posts). Wie würdet ihr mehrere MB an SQL-Statements abarbeiten? Gibts irgendwelche Erfahrungen mit JDBC-Fehlern dieser Art? Interessant ist, dass eine Exception prinzipiell beim ersten Statement eines Batches auftritt, ansonsten kann ich keine Gemeinsamkeiten erkennen, teilweise sind die Statements extrem einfach gehalten und laufen auch wenn ich sie dann über SQL-Worksheet einfüge...
lg
Sysmaniac
Hier die Fehlermeldung aus dem JDBC-tracefile, tritt unregelmäßig auf:
SQLException: SQLState(23000) vendor code(1401)
java.sql.SQLException: ORA-01401: inserted value too large for column
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
at oracle.jdbc.driver.OracleStatement.parseExecuteFetchWithTimeout(OracleStatement.java:2194)
at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:5350)
at bmecatloader.LoadSQL.main(LoadSQL.java:101)
SQLException: SQLState(null) vendor code(17081)
java.sql.BatchUpdateException: Error while processing batch: ORA-01401: inserted value too large for column
at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:510)
at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:562)
at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:5373)
at bmecatloader.LoadSQL.main(LoadSQL.java:101)
Alles anzeigen