使用xml批量更新sql server表

时间:2010-06-18 14:30:37

标签: sql sql-server xml sql-server-2005

如何通过以XML格式发送数据来更新sql server 2005中的批量数据? 我能够将批量数据插入表中,但我不知道更新数据。

5 个答案:

答案 0 :(得分: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

请注意,这是一种善意的suedo代码。所以用你的字段名替换fieldx,并用表的主键字段名或唯一标识符字段名替换主键。

答案 1 :(得分:1)

SQL Server 2005及更高版本本身支持XML数据类型,并且还支持XQuery语言,用于将XML分解为关系数据列。

查看Introduction to XQuery in SQL Server 2005,了解其工作原理。

答案 2 :(得分:0)

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

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

我可能会建议您编写一些xslt来从传入的xml流中创建更新语句,然后运行该sql脚本。

答案 3 :(得分:0)

查看OPENXML功能。映射还希望将XML数据加载到variable table中,以便您可以像在普通数据库表之间那样轻松地加入或组合查询的其余部分。

答案 4 :(得分:-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>'