【问题标题】:Inserting large xml data into DB2将大型 xml 数据插入 DB2
【发布时间】:2013-04-29 14:28:09
【问题描述】:

我有以下情况,

在我的数据库表中,我有一列用于存储 xml 数据。当我尝试使用 Insert 查询将数据插入此表时,我收到 string is too large 异常。

我尝试将类型保持为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

【问题讨论】:

  • 限制应该是 2gb。您是直接插入数据库还是使用某种应用程序?应用程序可能会截断它。
  • 我正在尝试使用查询直接插入它。
  • 这是 DB2 for i、LUW 还是 z/OS?
  • 我在 Windows 上使用 DB2 控制中心。
  • SQL 代码是什么?

标签: sql db2


【解决方案1】:

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

如果您的 XML 文档在文件中,您可以添加一个 UDF,以便更轻松地将文件内容直接拉入 XML 列。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-03-11
        • 1970-01-01
        • 2023-03-25
        • 2022-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-26
        相关资源
        最近更新 更多