【问题标题】:Inserting into SQL Server database from XML using XQuery使用 XQuery 从 XML 插入 SQL Server 数据库
【发布时间】:2013-02-19 07:03:30
【问题描述】:

我正在尝试使用我将获得的 XML 文件更新 SQL Server 数据库。我正在尝试使用 XQuery 插入每条 XML 记录的一部分,但是很难将多个节点的值获取到数据库的相应列。这是我正在使用的代码:

USE GOCO
GO

DECLARE @x XML

SET @x = '<Table6>
<Flt_x0020_No>1</Flt_x0020_No>
<AvNo>2046</AvNo>
<Date>2010-05-19T00:00:00+04:30</Date>
<Takeoff_x0020_Time>14:15</Takeoff_x0020_Time>
<Land_x0020_Time>15:09</Land_x0020_Time>
<Total_x0020_Flt_x0020_Time>0.9</Total_x0020_Flt_x0020_Time>
</Table6>
<Table6>
<Flt_x0020_No>3460</Flt_x0020_No>
<AvNo>2489</AvNo>
<Date>2013-01-15T00:00:00+04:30</Date>
<Takeoff_x0020_Time>8:40</Takeoff_x0020_Time>
<Land_x0020_Time>13:05</Land_x0020_Time>
<Total_x0020_Flt_x0020_Time>4.5</Total_x0020_Flt_x0020_Time>
</Table6>'


insert into Flight(
FltNo,
AvNo
)

select 

Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column1.value('text() [2]', 'varchar(50)')


from @x.nodes('/Table6/Flt_x0020_No, /Table6/AvNo') As Table1(Column1)

这给了我:

FltNo|AvNo

1 |空

3460 |空

2046 |空

2489 |空

我正在寻找以下结果:

FltNo|AvNo

1 |2046

3460 |2489

有人知道怎么做吗?谢谢。

【问题讨论】:

    标签: sql-server xml xquery


    【解决方案1】:

    这行得通:

    select  Table1.Column1.value('Flt_x0020_No[1]', 'varchar(50)'),
            Table1.Column1.value('AvNo[1]', 'varchar(50)')
    from    @x.nodes('/Table6') As Table1(Column1)
    

    【讨论】:

      【解决方案2】:

      这是一个错字吗?

      Table1.Column1.value('text() [1]', 'varchar(50)'),
      Table1.Column1.value('text() [2]', 'varchar(50)')
      

      好像第二行应该是Column2

      Table1.Column1.value('text() [1]', 'varchar(50)'),
      Table1.Column2.value('text() [2]', 'varchar(50)')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多