【问题标题】:What is the fastest way to query in batches a large xml stored in xmltype column in oracle database table?批量查询存储在oracle数据库表中xmltype列中的大型xml的最快方法是什么?
【发布时间】:2017-03-13 19:22:35
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我已经想出几种方法来使用一个 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子句的游标,批量查询记录。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 2014-02-24
      • 2015-08-01
      • 1970-01-01
      • 2012-04-25
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      相关资源
      最近更新 更多