Oracle
 sql >> Database >  >> RDS >> Oracle

Inserisci CLOB nel database Oracle

Stai diventando complicato.

Usa una PreparedStatement e addBatch() per ogni clob nel tuo elenco:

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

Nessun problema con le stringhe di escape, nessun problema con la lunghezza dei letterali, nessuna necessità di creare clob temporanei. E molto probabilmente veloce quanto l'utilizzo di una singola istruzione INSERT ALL.

Se stai utilizzando un driver corrente (> 10.2), penso che nemmeno la chiamata setCharacterStream() e la creazione del Reader siano necessarie. Un semplice setString(1, query) molto probabilmente funzionerà anche.