将大型xml数据插入DB2

时间:2013-04-29 14:28:10

标签: sql db2

我有以下情况,

在我的数据库表中,我有一个用于存储xml数据的列。当我尝试使用Insert查询将数据插入此表时,我得到的字符串太大异常。

我尝试将类型保持为XMLVACHAR(32000),我得到了同样的例外。

任何人都可以帮我吗?

更新

这是我在插入时遇到的错误。

The string constant beginning with "'<!--Sample XML file generated by XMLSpy v2013 sp1 (http://www.altova." is too long.. SQLCODE=-102, SQLSTATE=54002, DRIVER=3.59.81

3 个答案:

答案 0 :(得分:1)

XMLPARSE函数对于将文本字符串转换为DB2的XML数据类型非常有用。您是否尝试过调用XMLPARSE来包装XML文本?

如果您的XML文档位于文件中,则可以添加UDF,以便更轻松地将文件内容直接提取到XML列中。

答案 1 :(得分:0)

您可以设置表格中每列的大小。尝试将默认大小(不是最大大小)更改为合适的大小。

  • 此外,当您尝试使用SQL命令行直接查询时,DBMS必须从其字符串池创建一个大字符串常量,该字符串池可以容纳您的XML(在这种情况下,它非常大,因此无法创建String)。如果以编程方式查询相同内容,则可以正常工作。
  • 如果同样的错误仍然存​​在或DBMS引发数据完整性错误,请尝试将数据结构更改为更大的数据结构,如CLOB(在这种情况下很可能)或BLOB(如果是图像和多媒体)。

答案 2 :(得分:0)

这有点傻但答案是使用XMLPARSE并将您的XML字符串分段为32K块并添加CLOB语句以覆盖字符串大小限制

XMLPARSE ( DOCUMENT 
CLOB('<?xml version="1.0"?>') ||
'<aLotOfVeryBigXmlData32kPart1 ......
' ||
'<aLotOfVeryBigXmlData32kPart2 ......
' ||
... etc ...
'<aLotOfVeryBigXmlData32kPartN ......
' )