Ausführen vieler SQL-Statements

  • 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:

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

  • Ich habe einen Batch verwendet weil das die schnellere Variante ist. Bin dann schließlich doch auf Single-Statements umgestiegen, der Geschwindigkeitsverlust hat sich mit ca. 30% eher in Grenzen gehalten.

    Der darunterliegende Fehler hat sich ziemlich lange vor mir versteckt weil sich die SQL-Fehlermeldung auf das falsche Statement bezogen hat. Im Endeffekt war die Meldung "Inserted Value too long" richtig nur wie gesagt, das Statement das den Fehler enthalten hat war nicht das vom Programm als fehlerhaft gemeldete.

    Thanks trotzdem
    Sysmaniac

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

  • Nur so aus Neugier: Bei welcher Anwendung braucht man mehrere 10.000 SQL-Statements? Werden die Statements nur einmal ausgeführt, oder öfters? Ist das ein Experiment oder steckt dahinter auch eine echte Anwendung?

  • Da steckt eine echte Anwendung dahinter: Wir bekommen Katalogdaten eines Unternehmens im XML-Format, wandeln die Daten in SQL-Statements um und schreiben sie dann in die DB unseres E-Procurement-Systems (ist zwar jetzt ein Schimpfwort aber was solls ;) ).

    Das ganze passiert so alle paar Wochen mal, die Laufzeit ist also eher nebensächlich.

    lg
    Sysmaniac

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!