【问题标题】:How to insert an XML with more than 4000 Characters into an XMLTYPE Column in Mule如何在 Mule 的 XMLTYPE 列中插入超过 4000 个字符的 XML
【发布时间】:2021-03-18 00:00:47
【问题描述】:

我有一个超过 4000 个字符的 XML。 XMLTYPE 中 Oracle 中的数据类型。插入或执行脚本组件不允许我将此 XML 插入 Oracle 。我无法更改 Oracle 中的数据类型。有什么方法可以将 XML 插入 XMLTYPE 列。在 Java 中,我可以通过从 Connection 创建 SQLXML 对象来实现它。

SQLXML xml = conn.createSQLXML(); //This allowing to save the xml at any size 

我遇到的错误

ORA-01461: can bind a LONG value only for insert into a LONG column 

插入语句

insert into ABC(ID,RESPONSE_XML) values(123, :RESPONSE_XML))

转型

'RESPONSE_XML' : write(payload, 'application/xml')

如果我减少有效负载 xml 中的字符数,则其插入成功。我们可以在这里做些什么来插入它。 我使用的 JDBC 驱动程序是 ojdbc14-10g.jar

【问题讨论】:

  • 尝试插入超过4000个字符时请添加完整错误,以及字段的DDL。
  • 仍然缺少表定义。该错误应包括来自 Mule 的完整错误消息。您应该将流中的完整 mule 操作和转换共享为 XML,而不仅仅是部分 sn-ps
  • 除了我最后的评论,还包括JDBC驱动的名称和版本以及数据库连接器配置。

标签: mule dataweave


【解决方案1】:

这可能是 Oracle 的限制。它对 XML 标识符的大小有限制:

XML 标识符长度限制 – Oracle XML DB 仅支持长度不超过 4000 个字符的 XML 标识符。

https://docs.oracle.com/cd/E18283_01/appdev.112/e16659/appjspec.htm

拥有这样的 XML 简直太疯狂了。

【讨论】:

  • 但这真的是 Oracle 或 Mule 的限制。因为在 java 中我们可以使用 SQLXML xml = conn.createSQLXML(); 来实现它。这允许以任何大小保存 xml。所以在 mule 中也应该有这样的选项吧?
  • 这是您应该在问题中提供的信息。
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 2018-09-08
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
相关资源
最近更新 更多