我有一个Oracle xmldb表,其中包含一个xmltype列,该列有多个大型xml记录。每个xml的大小约为100MB,其中一部分具有重复元素。在每个xml中,重复元素的数量可以达到几千。我只需要读取重复的元素。读取元素集合批次中重复元素的最佳方法是什么?假设批处理大小可以是一次50个重复元素。我已经使用DBMS_XMLGEN编写了代码,以便有效地批量编写xml,但无法找到一种方法来执行类似的批量读取。请建议一个有效的方法。
我已经找到了用一个sql查询完成此操作的几种方法。
方法1:
With在sql查询中:1. 创建一个包含重复xml元素列的xmltable
。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查询上打开一个带有limit子句的游标,以批量查询记录