使用XML批量更新SQL Server表

4

我该如何以XML格式发送数据以批量更新SQL Server 2005中的数据?我能够将批量数据插入表中,但我不知道如何更新数据。

5个回答

2
Insert into #TempTable
//Basically do bulk insert into temp table then...


Update MyTable
  Set Field1 = tt.Field1,
      Field2 = tt.Field2,
      ...
FROM #TempTable tt
where primaryKey = tt.PrimaryKey

请注意,这是一种伪代码。因此,请将fieldx替换为您的字段名称,并将primaryKey替换为表的主键字段名称或唯一标识符字段名称。

1

SQL Server 2005及以上版本具有原生XML数据类型支持,同时支持XQuery语言将XML剖分为关系型数据列。

查看SQL Server 2005中的XQuery介绍,了解其工作原理。


0

更新需要您确定一些外部逻辑。

例如,如果传入记录的主键已经存在,则更新其他列,否则插入此记录。

我建议您编写一些XSLT来从传入的XML流创建更新语句,然后运行该SQL脚本。


是的...我需要做类似这样的事情...如果主键存在,我需要更新它,否则我需要插入数据。我只有一个包含所有数据的XML。如果主键不存在,我会为该字段添加零。 - nimi

0

请查看OPENXML函数。您还可以将XML数据加载到变量表中,以便您可以像在普通数据库表之间一样轻松地连接或组合查询的其余部分。


-1

要更新表格中的值,请使用

CREATE PROCEDURE UpdEmpd

    @UpdEmpd xml
AS

BEGIN

  UPDATE HumanResources.EmployeeData

  SET    Salary=3000.00

  WHERE  EmployeeID='E15'

END

执行:

Exec UpdEmpd  '<Record xmlns:xsi="http://www.w3.org/2012/xmlschema-instance">

                  <HumanResources.EmployeeData>

                         <Salary>3000.00</Salary>

                         <EmployeeID>E15</EmployeeID>

                  </HumanResources.EmployeeData>

          </Record>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接