Oracle
 sql >> Base de données >  >> RDS >> Oracle

Insérer CLOB dans la base de données Oracle

Vous rendez les choses trop compliquées.

Utilisez un PreparedStatement et addBatch() pour chaque clob de votre 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();

Pas de problème avec les chaînes qui s'échappent, pas de problème avec la longueur des littéraux, pas besoin de créer des clobs temporaires. Et probablement aussi rapide que d'utiliser une seule instruction INSERT ALL.

Si vous utilisez un pilote actuel (> 10.2), je pense que l'appel setCharacterStream() et la création du lecteur ne sont pas non plus nécessaires. Un simple setString(1, query) fonctionnera très probablement aussi.