使用 PLSQL 将 XML 解析为数据库表

Posted

技术标签:

【中文标题】使用 PLSQL 将 XML 解析为数据库表【英文标题】:Parsing XML to Database Table Using PLSQL 【发布时间】:2020-06-14 03:59:20 【问题描述】:

谁能建议如何使用 plsql 将以下 XML 解析为所需的数据库表?谢谢。

<Label name=“Case”>C12</Label>
<Label name=“Route”>
    <String name=“PName”>UE21010</String>
    <Integer name=“Operation”>12345</Integer>
    <Label name=“Process”>
        <String name=“PNumber”>W98765</String>
        <String name=“Recipe”>Burn101</String>
    </Label>
</Label>
<Label name=“User”>
    <String name=“EmpNo”>E1234</String>
    <String name=“Name”>John</String>
</Label>

数据库表中的所需输出:

+-----------------------+---------+
| Item                  | Value   |
+-----------------------+---------+
| Case                  | C12     |
+-----------------------+---------+
| Route.PName           | UE21010 |
+-----------------------+---------+
| Route.Operation       | 12345   |
+-----------------------+---------+
| Route.Process.PNumber | W98765  |
+-----------------------+---------+
| Route.Process.Recipe  | Burn101 |
+-----------------------+---------+
| User.EmpNo            | E1234   |
+-----------------------+---------+
| User.Name             | John    |
+-----------------------+---------+

【问题讨论】:

请参阅Why should I provide a Minimal Reproducible Example for a very simple SQL query?。请不要发布代码或表格结构的图像。 嗨,对不起,我是新来的,不知道如何显示输出表,并认为使用图像将是我所知道的最好的。主要目标只是试图在这里清楚地提出我的问题。 如果您阅读我给您的链接,您会注意到有一个“ASCII 数据表生成器工具”。这可以帮助您提供可以在此处使用的表格。 谢谢@Scratte,我已经修改了我的查询。 【参考方案1】:

您是否尝试过类似的方法:

DECLARE
v_xml xmltype;
BEGIN
SELECT XMLTYPE('...xml here...') INTO v_xml FROM DUAL;

INSERT INTO table (Case,Route.PName,...) VALUES
SELECT EXTRACT(v_xml, '//Label[@name='Case']'), EXTRACT(v_xml, '//Label[@name='Route']'),...
FROM DUAL
END;

【讨论】:

以上是关于使用 PLSQL 将 XML 解析为数据库表的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL:将数据从 XML 解析并插入到表中

PLSQL 中的 XML 解析

PLSQL:将 CLOB 转换为 XML

PLSQL PHP:如何将大型 xml 数据从 PLSQL 函数获取到 PHP

plsql解析文本文件的输出并插入表

用PLSQL解析xml文件