我的Oracle xmldb包含一个包含xmltype列的表,该列包含多个大xmls记录。每个xml的大小约为100MB,其中一部分xml具有重复元素。 每个xml中重复元素的数量可以是几千个。 我只需要阅读重复元素。 在批量元素集合中读取重复元素的最佳方法是什么?假设批量大小可以同时为50个重复元素。 我已经使用DBMS_XMLGEN编写了代码,用于批量有效地编写xml,但无法找到一种方法来进行类似的批量读取。 请提出一个有效的方法。
答案 0 :(得分:0)
我已经通过一个SQL查询找到了几种方法。
在sql查询中:
1.创建一个xmltable
,其中包含用于重复xml元素的列。
2.选择包含每个重复元素的列
select elements.*
from
xmltable('//*/parent[@name="E1"].*' passing xml
columns
repeating_element xmltype path '/repeatingElement') elements;
使用table()
运算符:
查询看起来像这样:
select elements.*
from
table(xmlsequence(extract(xml, '//*/parent[@name="E1"]/repeatingElement'))) elements;
使用上述任何一种查询,在此sql查询中打开带限制子句的游标,批量查询记录。