简体   繁体   English

如何从Oracle数据库中将关系数据提取到结构化XML文件中?

[英]How can I extract relational data from an Oracle database into a structured XML file?

I have a simple table structure in an Oracle Database (11gR2). 我在Oracle数据库(11gR2)中有一个简单的表结构。 Using generic terms, I have "groups" than contain one or more "items"; 使用通用术语,我有“组”而不是包含一个或多个“项目”; ie a one-to-many relationship. 即一对多的关系。 So the "item" table has a "group_id" field, which is a foreign key to the same field on the "group" table. 因此“item”表有一个“group_id”字段,它是“group”表中同一字段的外键。

Is there a query I can use to extract this data from the database as XML? 我可以用一个查询从XML数据库中提取这些数据吗? I'd like the result to be something like this: 我希望结果是这样的:

<groups>
  <group name="group1">
    <item name="item1">
    <item name="item2">
  </group>
  <group name="group2">
    <item name="item3">
    <item name="item4">
  </group>
</groups>

I started writing this in a PL/SQL procedure as a loop within a loop, ie looping through the groups then through the items within each group, but that seems long-winded. 我开始在PL / SQL过程中将其写为循环中的循环,即循环遍历组,然后遍历每个组中的项目,但这似乎是冗长的。 I was hoping there would be a query using "XMLTable" or "XMLForest" I could use for this sort of structure. 我希望有一个查询使用“XMLTable”或“XMLForest”我可以用于这种结构。

Using XmlAgg (to aggregate what you GROUP BY ): 使用XmlAgg(聚合你的GROUP BY ):

SELECT      CAST(
               XmlElement("groups",
                   XmlAgg(
                       XmlElement(
                           "group"
                          ,XmlAttributes(g.name as "name")
                          ,XmlAgg(
                              XmlElement(
                                   "item"
                                  ,XmlAttributes(i.name as "name")
                              )
                           )
                       )
                   )
               )
               AS VARCHAR2(4000)
            ) MY_XML
FROM        group g
 INNER JOIN item  i ON i.groupid = g.id
GROUP BY    g.name
;

See XMLAgg documentation: http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb13gen.htm#i1032865 请参阅XMLAgg文档: http ://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb13gen.htm#i1032865

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从Oracle数据库中的XML字段中以表格格式提取数据? - How to extract data in tabular format from XML field in Oracle database? 使用 SQL from Oracle Database 从 XML Clob 中提取数据 - Extract data from XML Clob using SQL from Oracle Database 将来自 XML 的数据存储在关系数据库 SQL 中 - Store data from XML in relational SQL database 在 Oracle 中,如何提取 XML 列中 XML 项的值? - In Oracle, how can I extract value of XML item in XML column? 如何在Oracle 11g中使用SQL对象关系语句从两个表中提取数据 - How to extract data from two tables using SQL object relational statement in oracle 11g 无法从Oracle SQL中的xml值提取数据 - Can't extract the data from xml values in oracle sql 如何从 Oracle SQL Developer 中提取 XML 数据 - How to extract XML data from Oracle SQL Developer 如何从XML文件更新SQL数据库表? - How can I update an SQL database table from an XML file? 应该如何开发一个非程序员可以从 JSON 格式中提取数据作为关系数据库的环境? - How should develop an environment that non-programmer can extract data as relational DB from JSON formatted? 如何将存储在XML文件中的数据转换为关系数据库(MySQL)? - How to convert data stored in XML files into a relational database (MySQL)?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM