批量查询存储在oracle数据库表的xmltype列中的大型xml的最快方法是什么?

时间:2016-10-31 16:51:38

标签: xml oracle plsql xmltype oracle-xml-db

我的Oracle xmldb包含一个包含xmltype列的表,该列包含多个大xmls记录。每个xml的大小约为100MB,其中一部分xml具有重复元素。 每个xml中重复元素的数量可以是几千个。 我只需要阅读重复元素。 在批量元素集合中读取重复元素的最佳方法是什么?假设批量大小可以同时为50个重复元素。 我已经使用DBMS_XMLGEN编写了代码,用于批量有效地编写xml,但无法找到一种方法来进行类似的批量读取。 请提出一个有效的方法。

1 个答案:

答案 0 :(得分:0)

我已经通过一个SQL查询找到了几种方法。

方法1:

在sql查询中:  1.创建一个xmltable,其中包含用于重复xml元素的列。  2.选择包含每个重复元素的列

select elements.* from xmltable('//*/parent[@name="E1"].*' passing xml columns repeating_element xmltype path '/repeatingElement') elements;

方法2:

使用table()运算符: 查询看起来像这样: select elements.* from table(xmlsequence(extract(xml, '//*/parent[@name="E1"]/repeatingElement'))) elements;

使用上述任何一种查询,在此sql查询中打开带限制子句的游标,批量查询记录。