sql-server - 将 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 语句中指定的列数相匹配。”
完全难倒这里任何事情都可以提供帮助谢谢!
解决方案
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
推荐阅读
- r - 检测二进制序列的模式并在R中使用相同的模式扩展序列
- python - 使用 Gazpacho 和 Pandas 刮擦时输出有限
- gpu - 为什么金属三重缓冲模型在官方示例中很重要?
- macos - macos Catalina 上的 curl 不显示响应正文
- python - 如何在列表理解中使用 if 条件?
- firebase - 从 OnSnapshot 收到的消息的费用
- java - JavaFX:围绕枢轴点移动相机意外行为
- sqlite - 结合 UNION 和 EXCEPT 语句时 sqlite 中的括号
- python - 为什么我的随机森林分类器模型中每棵决策树的 max_depth 都是一样的?
- jsrender - 根据 for 循环中的鉴别器字段加载不同的模板