我正在尝试使用Clob运行批处理更新,但是我的表正在使用Clobs内存地址而不是Clob值进行更新。
def updateCounts = sql
.withBatch('UPDATE my_table SET clob_column = ? WHERE id = ?') { stmt ->
fileList.each { fileName->
Clob commentClob = CLOB.createTemporary(sql.getConnection(), false, CLOB.DURATION_SESSION)
CSVReader reader = new CSVReader(
new FileReader(theInfoFile),
CSVParser.DEFAULT_SEPARATOR,
CSVParser.DEFAULT_QUOTE_CHARACTER, 1)
String[] row;
while ((row = reader.readNext()) != null) {
commentClob.truncate(0)
commentClob.setString(1,"${row[17]}")
stmt.addBatch([commentClob,row[0]])
}
}
}
我在数据库中看到的值是“ oracle.sql.CLOB@15500a8”。关于如何处理Clob值的任何建议?
最佳答案
未经测试,但是您可以尝试特定于oracle的characterOutputStream
:
commentClob.characterOutputStream << row[17]
您可能需要将变量键入为:
OracleClob commentClob = ...
代替:
Clob commentClob = ...
但是俗套就是俗套,您可能不需要。