Groovy Пакетное обновление с Clob - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь запустить пакетное обновление с использованием clob, но моя таблица обновляется с использованием адреса памяти clob вместо значения 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 голосов
/ 23 мая 2019

Не проверено, но вы можете попробовать специфический для оракула characterOutputStream:

commentClob.characterOutputStream << row[17]

, возможно, вам потребуется ввести переменную как:

OracleClob commentClob = ...

вместо:

Clob commentClob = ...

но отличная, отличная, вам, вероятно, не понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...