处理大型xml文档

时间:2016-12-05 11:19:39

标签: xml oracle binary large-files xmltype

据我所知,存储为securefile binary xml的xmltype可以处理最大4 GB的文件大小。

我想知道是否有人知道处理大于4 GB xml文件的好方法,这些文件都存储在数据库中并从中读取\选择数据。

1 个答案:

答案 0 :(得分:0)

您不应将诸如XMLType之类的大型XML文件存储在Oracle数据库中。

Oracle中的大多数XML函数都基于Document Object Model (DOM),这需要将整个XML文档加载到内存中,包括大量的开销数据。即使在大型机器上,这通常也会导致内存泄漏或类似问题。

为了将这样的XML放入数据库,你应该考虑一个基于外部流的,分别是。基于事件的XML解析器,通常称为SAX (Simple API for XML)。几乎每种编程语言都有SAX解析器。然后将XML的内容存储为通常的关系数据。从Oracle数据库创建这样大的XML将“逐行”地进入CLOB

另见PL/SQL APIs for XMLType

  

这种类型的过程处理可通过Oracle XDK Java和C组件中的SAX接口获得。

通常,在使用SAX解析器时必须编写更多代码,因为它不提供任何修改或查询元素。与此同时,有基于流的解析器可用(例如Perl XML::Twig),它与基于DOM的解析器一样强大。