用Clob进行Groovy批处理更新

时间:2019-05-22 19:37:39

标签: java groovy

我正在尝试使用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值的任何建议?

1 个答案:

答案 0 :(得分:0)

未经测试,但是您可以尝试特定于oracle的characterOutputStream

commentClob.characterOutputStream << row[17]

您可能需要将变量键入为:

OracleClob commentClob = ...

而不是:

Clob commentClob = ...

但是时髦是时髦的,您可能不需要。