如何将 XML 数据存储到 Oracle 表中



在我们的业务中,我们每天接收并需要处理数千个XML文件,所有这些文件都是相同的格式。我们希望将这些数据存储到 oracle 表中,并保留这些数据的层次结构关系,然后我们可以使用传统的 SQL 查询它们并进行进一步的分析。最好的方法是什么?XML DB 是正确的选择吗?

更新:

目前,我正在考虑将 XML DB 与存储在结构化存储中的数据一起使用。因此,我知道我可以使用注释定义XML架构,并且我知道所涉及的步骤,但我希望获得以下问题的确认答案:

  1. 是否可以批注一个 XML 架构以创建多个父子关系表?我希望数据存储在关系表中,而不是对象中。
  2. 我可以为所有这些表定义主键、外键吗?我不太清楚 Oracle 如何维护这些表中的父子关系。
  3. 谁能给我举个好例子?

你肯定想从XMLDB开始。

XMLDB 本身就是一个由特性和功能组成的世界。

简而言之,您有三个存储选项,其中包含XMLDB和XMLTYPE数据。

您可以存储:

1.) 转换为 CLOB 数据类型。 如果这样做,XML 就位于数据库中,它是一个 LOB。 您无法对其进行索引、搜索等。 数据库是一个位桶,您存储 XML。

2.) 二进制 XML:这是 11gR2 中引入的最新选项。 这将标记和压缩 XML,并以编码的二进制格式存储。 这样做的好处是,您可以使用 Oracle 文本和 XMLINDEX 域索引来索引和搜索内容。 这是我最有经验的选项。 我们有十亿个文档,平均大小约为12k,存储在11gR2数据库中。 它对我们来说效果非常好。

3.) XML 到关系映射:定义关系架构以将数据存储在 XML 架构中,并定义 XML 元素如何映射到哪些关系表和字段。 在引入时,XML 被分解并存储到传统的关系模型中。 然后,您可以像搜索任何传统数据库一样进行搜索、排序、索引。

这实际上取决于您要做什么,以及您选择使用哪种 XML 存储模型。

您可以尝试在Oracle XMLDB论坛上提问。 它非常活跃,并且有一些人比我更了解这个主题。https://forums.oracle.com/forums/forum.jspa?forumID=34

希望有帮助。

回复更新 1:

我真的只有二进制XML存储选项的经验,抱歉。 我认为在 OTN 上查看 XMLDB 示例代码会很有用。

请看:

http://www.oracle.com/technetwork/indexes/samplecode/xmldb-sample-523617.html

有一本好书,我用过它,它帮助我解决了所有基本问题。它是关于Oracle 11g的,但它也可以与12c一起使用。

它被称为"构建Oracle XML DB应用程序",我建议,购买它并预留两天时间阅读和尝试。

相关内容

  • 没有找到相关文章

最新更新