【问题标题】:Reading XML into SQL tables将 XML 读入 SQL 表
【发布时间】:2015-07-09 19:42:11
【问题描述】:

我正在读取 xml 并将其写入 sql 表中

想将下面的xml插入到表中

Declare @MainXml XML =
'<Parent>
  <Root>
      <Admin>admin1</Admin>
      <Data number="1">
        <Type value="100"></Type>
        <Type value="200"></Type>
     </Data>        
  </Root>
 <Root>
     <Admin>admin2</Admin>
     <Data number="1">
       <Type value="300"></Type>
       <Type value="400"></Type>
     </Data>
 </Root>
</Parent>'

我正在尝试像这样插入表格

Insert Into Table1(col1,col2)
  SELECT
   A.RT.value('Admin[1]','varchar(max)'),
   B.DT.value('@value','varchar(max)')
   FROM @MainXml.nodes('Parent/Root') as A(RT)

cross apply A.RT.nodes('Data/Type') as B(DT)

它可以在上面的 xml 上正常工作。

如果部分被删除,它将无法工作。

为什么我的查询不适用于

Declare @MainXml XML =
'<Parent>
  <Root>
      <Admin>admin1</Admin>     
  </Root>
 <Root>
     <Admin>admin2</Admin>
 </Root>
</Parent>'

我的 XML 中的部分可能存在也可能不存在。那么如何处理这样的xml。

如果没有数据,想给它输入null。

请给我建议。

【问题讨论】:

  • 请修正您的标签以反映您正在使用的 RDBMS(MySQL 或 MS SQL-Server)。

标签: mysql sql-server xml rdbms


【解决方案1】:

这应该可行:

编辑:哦,我刚刚意识到,有不止一个类型节点。稍等……

好的,你做得很好,只需将 CROSS APPLY 更改为 OUTER APPLY...

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多