【发布时间】:2013-09-12 10:18:17
【问题描述】:
有一个 XML 文件 (20MB),当我尝试使用 EXTRACTVALUE 从表中使用 select 语句提取值时,它需要很长时间(小时)。 该表包含 XML_DATA 作为 XMLTYPE 请建议我调整 SQL QUERY 或任何其他替代方法以从大型 xml 文件中提取值
SELECT EXTRACTVALUE (VALUE (Name),'*/Name') FirstName,
.....
FROM TB_XML_type,TABLE (XMLSEQUENCE (EXTRACT (xml_data, '*/Name'))) Name
注意: XML 格式是用户定义的。
【问题讨论】:
-
对于那种大小的 XML 文档,我会考虑使用 SAX。 DOM 不能很好地处理这种大小的文档。遗憾的是,大多数(如果不是全部)PL/SQL XML API 都是基于 DOM 的,因此您可能不得不使用 Java 存储过程或将 XML 处理移到数据库之外。下面是一个如何使用 Java 存储过程将 XML 文档解析为 SAX 的示例,您可能能够适应:forums.oracle.com/message/1389286#1389286。
-
感谢您的建议。我将尝试使用 Java 存储过程。