sql >> Base de Datos >  >> RDS >> Oracle

Inserte CLOB en la base de datos de Oracle

Lo estás haciendo demasiado complicado.

Use un PreparedStatement y addBatch() para cada clob en su lista:

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();

Sin perder el tiempo con cadenas de escape, sin problemas con la longitud de los literales, sin necesidad de crear clobs temporales. Y lo más probable es que sea tan rápido como usar una sola instrucción INSERT ALL.

Si está utilizando un controlador actual (> 10.2), creo que la llamada setCharacterStream() y la creación del Lector tampoco son necesarias. Un simple setString(1, query) lo más probable es que también funcione.