使用 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 解析为数据库表的主要内容,如果未能解决你的问题,请参考以下文章