首页 > 解决方案 > 将 XML 文件数据插入现有表

问题描述

我正在尝试将 XML 文件的内容插入到现有表中。到目前为止,我只有以下内容:

DECLARE @NewCustomers XML;
SET @NewCustomers = '
<NewCustomers>

<Customer LastName="Chan" FirstName="Isabella" Password="" 
EmailAddress="izzychan@yahoo.com"/>

<Customer LastName="Prine" FirstName="John" Password="" 
EmailAddress="johnprine@gmail.com"/>

<Customer LastName="Kitchen" FirstName="Kathy" Password="" 
EmailAddress="kathykitchen@sbcglobal.net"/>

</NewCustomers>
'
;

INSERT INTO Customers (EmailAddress, Password, FirstName, LastName)
Values(
@NewCustomers
)
GO

但我收到错误“INSERT 语句中的列数多于 VALUES 子句中指定的值。VALUES 子句中的值数必须与 INSERT 语句中指定的列数相匹配。”

完全难倒这里任何事情都可以提供帮助谢谢!

标签: sql-serverxml

解决方案


XML 不会自行解析。

例子

INSERT INTO Customers (EmailAddress, Password, FirstName, LastName)
Select EMailAddress = x.v.value('@EmailAddress','VARCHAR(150)')
      ,Password     = x.v.value('@Password','VARCHAR(150)')
      ,FirstName    = x.v.value('@FirstName','VARCHAR(150)')
      ,LastName     = x.v.value('@LastName','VARCHAR(150)')
 From  @NewCustomers.nodes('NewCustomers/Customer') x(v)

Select 将产生以下内容

EMailAddress                    Password    FirstName   LastName
izzychan@yahoo.com                          Isabella    Chan
johnprine@gmail.com                         John        Prine
kathykitchen@sbcglobal.net                  Kathy       Kitchen

推荐阅读