sql - XML 到 SQL 表 - 得到空白
问题描述
问题
我需要从另一个应用程序提供的 XML 文件中获取数据。这些 XML 包含需要插入到不同应用程序的数据库表中的数据。
问题是,我无法从 XML 文件中获取值。我不断得到空白/空值。
我正在使用 SQL Server 2014 管理工作室。
我试过的
我研究了如何读取 XML 并将其放入表中。我已经研究了有效的教程。但是,每当我尝试将相同的过程应用于我的表并使用我的 XML 数据时,我总是得到空白值。
一些帮助将不胜感激,因为我已经研究了一天并研究如何使用 MS SQL 来解决这个问题。而且我一生都无法理解为什么我不断得到空值。
XML
<DistributionOrder xmlns="a-url">
<Date>2019-03-07T14:38:00</Date>
<Order_Number>ACME01</Order_Number>
<Comment/>
<Status>Active</Status>
<Lines>
<Line>
<Order_Line_Number>1</Order_Line_Number>
<Product>22</Product>
<Status_Line>Active</Status_Line>
<Comment_Line/>
<Location>ENT_78</Location>
</Line>
</Lines>
</DistributionOrder>
查询
DECLARE @xmlData XML;
INSERT INTO dbo.XMLwithOpenXML(XML_data)
SELECT *
FROM OPENROWSET(BULK 'C:\test_file.xml', SINGLE_BLOB) AS ImportSource;
SELECT * FROM XMLwithOpenXML;
SELECT
element.value('(Order_Line_Number/text())[1]', 'nvarchar(80)') AS Order_Line_Number,
element.value('(Product/text())[1]', 'nvarchar(80)') AS Product
FROM
XMLwithOpenXML
CROSS APPLY
XML_data.nodes('DistributionOrder/Lines/Line') AS DO(element)
GO
我的期望
Order_Line_Number | Product
------------------+----------
1 | 22
我得到什么
Order_Line_Number | Product
------------------+----------
|
解决方案
想通了,
<DistributionOrder xmlns="a-url">
</DistributionOrder>
是问题所在。我从 xml 中删除了 xmlns="a-url" 并发现我的代码正在运行。
发现可以使用
;WITH XMLNAMESPACES(DEFAULT 'a-url')
考虑命名空间。
推荐阅读
- excel - 使用 Excel 公式从 Bloomberg 获取 Code Isin
- kotlin - 如何在 Kotlin 中使用 Firebase Phone Auth 登录时检查用户是否已经存在?
- wordpress - 深度3的wordpress自定义walker菜单
- python - 导入torch包时,NameError: name '_C' is not defined
- python - 无限生成ascii组合
- javascript - javascript 类型有问题
- r - 评估多列的组合值,可能使用 dplyr
- jenkins - Jenkins slackSend:@here 或特定用户的频道警报通知
- tabulator - 在只有单击进行编辑的列的制表符行上添加可选空间的最佳方法是什么?
- git - 在 git config 中更改 user.email 后同步提交信用