无法将CLOB数据存储到DB2中的CLOB定义列中

时间:2017-07-02 13:20:51

标签: database db2 clob

我猜这是一个重复的问题,但还没有找到合适的解决方案。基本上我试图通过 DB2 过程将大量XML,即32000多个字符插入到CLOB列中。插入失败,出现以下错误,看起来DB2将输入视为String而不是CLOB数据类型。能否请您建议需要做什么?

SP

CREATE OR REPLACE PROCEDURE logging (IN HEADERDATA CLOB(10M))
LANGUAGE SQL
BEGIN
    INSERT INTO Logging(Header) VALUES (HEADERDATA);
    COMMIT;
END

错误

The string constant beginning with 
"'<?xml version="1.0" encoding="UTF-8"?><XXXXXXXX xmlns:xsi="http:" is too long.. 
SQLCODE=-102, SQLSTATE=54002, DRIVER=XXXXXX

1 个答案:

答案 0 :(得分:1)

DB2中的字符文字限制为大约32K字节。要处理更大的LOB,您需要避免使用SQL文本值。

在没有额外编程的情况下执行此操作的一种方法是将[future] CLOB内容写入文件,并使用IMPORTLOAD将其内容插入到列中。

或者,您可以围绕过程调用包装一个简单的Java程序,您可以使用PreparedStatement.setClob()来处理大型XML文档。