sql - 将 XML 导入并分解为 SQL 表

标签 sql xml

您好,我希望有人能帮助我,我正在尝试将 XML 元素导入到 XML 中的 SQL 表中 格式。

首先,我有一个名为 Chassis.xml 的 XML 文件,如下所示。

<Chassis>
  <Chassis Id="1" Chassis="blah blah" Suitability="1" Structured="1" />
  <Chassis Id="2" Chassis="blah blah" Suitability="1" Structured="1" />
  <Chassis Id="3" Chassis="Blah Blah" Suitability="1" Structured="1" />
  <Chassis Id="4" Chassis="Blah Blah" Suitability="1" Structured="1" />
</Chassis>

我正在尝试编写一个将元素导入表的 SQL 过程,这里是我想要的表布局。

test.hardwareComponents

Id          TypeId         XmlData
----------------------------------
1            0001         <Chassis Id="1" Chassis="blah blah" Suitability="1" Structured="1" />
2            0001         <Chassis Id="2" Chassis="blah blah" Suitability="1" Structured="1" />

TypeId 将是一个外键,稍后将在另一个表中定义该 Type 是什么,因此 TypeId 0001 是一个 Chassis ComponentType。

我尝试的每件事都不断失败,我已经花了好几个小时来做​​这件事,但我很困惑,有人能帮助我吗。

最佳答案

你试过类似的东西吗

DECLARE @xml XML

SET @xml = 
'<Chassis> 
  <Chassis Id="1" Chassis="blah blah" Suitability="1" Structured="1" /> 
  <Chassis Id="2" Chassis="blah blah" Suitability="1" Structured="1" /> 
  <Chassis Id="3" Chassis="Blah Blah" Suitability="1" Structured="1" /> 
  <Chassis Id="4" Chassis="Blah Blah" Suitability="1" Structured="1" /> 
</Chassis>'


SELECT  T2.Loc.value('@Id', 'INT') ID,
        T2.Loc.query('.')
FROM    @xml.nodes('/Chassis/Chassis') as T2(Loc)

关于sql - 将 XML 导入并分解为 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466826/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

java - 将解密的文件写入内存

javascript - 如何像 xml 解析器一样将 html 打印为纯文本?

android - 同一列上的两个按钮

mysql - 如何将启动脚本添加到 mysql docker 容器?

sql select query 将第一列转换为标题,将第二列转换为行?

c# - 从 xsd 生成的代码中复数化属性

java - JAXB重复解析小xml文档

sql - DBMS_CHANGE_NOTIFICATION 和 NEW_REG_START

sql - ORA-00936 : missing expression error when inserting values