0

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

4

1 回答 1

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查询上打开一个带limit子句的游标,以批量查询记录。

于 2016-11-15T10:59:32.083 回答