【发布时间】:2021-02-04 07:25:43
【问题描述】:
我必须获取 XMLType 类型的数据,并将其插入到另一个数据库中,该数据库具有相同的表和相同的 XMLType 列。
- 我正在从这里读取数据
select id, to_clob("CONTACT") as CONTACTNAME1
from CONTACT_BINARY_TBL
- 将数据保存在
insert into COPY_CONTACT_BINARY_TBL (ID,CONTACTNAME)
values (#ID#,#CONTACTNAME1#)
结果:
java.sql.SQLException: ORA-19011: 字符串缓冲区太小。
因此,它适用于小型 XML,而不适用于大型 XML,因为 4K 是 vachar2 的限制。
那么如何插入大的 xmlType 值呢?
insert into contact_binary_tbl
values(1,XMLTYPE('....... ');
【问题讨论】:
-
你的表的结构是什么?你写了
XMLType,但ORA-19011大约是varchar2。您是否通过 java 传输数据?在 fetch 上应该有getClob或getCharacterStream并为 insert 设置相同的值。 -
你为什么要分两个阶段阅读和写作,你是如何持有/转换/翻译价值观的?如果您不能将
insert ... select ...作为一个操作执行,您至少可以将值保留为 CLOB(或 BLOB?)并使用绑定变量进行插入,而不是使用带引号的字符串文字构建插入?关于您的流程的详细信息不足,无法更具体。 -
如果您不需要使用一些外部工具转换数据并且没有网络隔离,那么在两个系统之间传输数据的最快和最可靠的方式将是database link。跨度>
标签: sql oracle sql-insert xmltype