我收到了一个 Excel 文件(2010 版),根据要求,我被要求将其保存为 XML 文件,然后导入 SQL 数据,以便在正常的 SELECT 语句中查询。
下面是我遵循的步骤列表,但现在我对数据有一个 SELECT,没有返回任何记录。我不确定这是否是由于我从 Excel 文件中获取 XML 文件所做的转换,还是我的OPENXML
查询有问题。
- 为了
XML
从文件中获取.xlsx
文件,我在 EXCEL 2010 中打开了该文件并将其保存在“XML 电子表格 2003 (*.XML)”中。 我使用以下代码将 XML 文件导入到表中:
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime) SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() FROM OPENROWSET(BULK 'C:\DEV\TestXML.xml', SINGLE_BLOB) AS x; SELECT * FROM XMLwithOpenXML
1. XML 数据现在已存储在表中,因此我使用下面的代码在 SELECT 语句中读取它以访问各个列:
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM XMLwithOpenXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT SNo,Salutation,PatientNRIC,FirstName,LastName,Gender,Race
FROM OPENXML(@hDoc, 'ROOT/SNo/Salutation/PatientNRIC/FirstName/LastName/Gender/Race')
WITH
(
SNo [nvarchar](50) '@SNo',
Salutation [nvarchar](100) '@Salutation',
PatientNRIC [nvarchar](255) '@PatientNRIC',
FirstName [nvarchar](255) '@FirstName',
LastName [nvarchar](255) '@LastName',
Gender [nvarchar](255) '@Gender',
Race [nvarchar](255) '@Race'
)
然后
EXEC sp_xml_removedocument @hDoc
GO
但是我得到的只是列的名称,没有返回实际数据:
我对 OPENXML 评论和使用 XML 文件完全陌生,尝试阅读不同的帖子,但仍然无法弄清楚为什么我的选择查询中没有显示任何数据。任何帮助表示赞赏。