Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Fügen Sie CLOB in die Oracle-Datenbank ein

Du machst es dir viel zu kompliziert.

Verwenden Sie ein PreparedStatement und addBatch() für jeden Clob in Ihrer Liste:

String sql = "insert  into " + tempTableName + " values (?)";
PreparedStatement stmt = connection.prepareStatement(sql);
for (String query : readQueries) {
  stmt.setCharacterStream(1, new StringReader(query), query.lenght());
  stmt.addBatch();
}
stmt.exececuteBatch();

Kein Herumspielen mit Escape-Strings, kein Problem mit der Länge der Literale, keine Notwendigkeit, temporäre Clobs zu erstellen. Und höchstwahrscheinlich genauso schnell wie die Verwendung einer einzelnen INSERT ALL-Anweisung.

Wenn Sie einen aktuellen Treiber (> 10.2) verwenden, ist der Aufruf von setCharacterStream() und das Erstellen des Readers meiner Meinung nach auch nicht erforderlich. Ein einfacher setString(1, query) wird höchstwahrscheinlich auch funktionieren.