Recebi um arquivo do Excel (versão 2010) e, com base no requisito, fui solicitado a salvá-lo como um arquivo XML e, em seguida, importar para os dados SQL prontos para serem consultados em instruções SELECT normais.
Abaixo está a lista de etapas que segui, mas agora que tenho um SELECT nos dados, nenhum registro é retornado. Não tenho certeza se é devido à conversão que fiz para obter um arquivo XML de um arquivo do Excel ou se há um problema na minha OPENXML
consulta.
- Para obter um
XML
arquivo do.xlsx
arquivo, abri o arquivo no EXCEL 2010 e salvei em 'Planilha XML 2003 (*.XML)'. Importei o arquivo XML em uma tabela utilizando o código abaixo:
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. Os dados XML foram armazenados agora na tabela, então eu uso o código abaixo para lê-los em uma instrução SELECT para acessar as colunas individuais:
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'
)
Então
EXEC sp_xml_removedocument @hDoc
GO
No entanto, o que recebo é apenas o nome das colunas, os dados reais não foram retornados:
Sou totalmente novo no comentário OPENXML e no trabalho com arquivos XML, tentei ler postagens diferentes, mas ainda não consegui descobrir por que nenhum dado é mostrado em minha consulta selecionada. Qualquer ajuda é apreciada.