IMPORTAR XML PARA O SQL

Olá,
mais uma dica para quem precisar trabalhar com XML no SQL.
Muitas vezes se torna mais viável pois o desempenho e muito bom !
Primeiramente crie um arquivo xml como o nome "Teste.xml" com o 
conteúdo abaixo e salve no  diretório c:\ do servidor sql:  

 <?xml version='1.0' encoding='ISO-8859-1'?>
<root>
 <row>
 <codigo_cliente><![CDATA[]]></codigo_cliente>
 <oab><![CDATA[mcsusi MG]]></oab>
 <codigo><![CDATA[41335579]]></codigo>
 <processo><![CDATA[814407]]></processo>
 <data><![CDATA[2010-10-18]]></data>
 </row>
</root>

No SQL Agora utilize a seguinte estrutura:

Declare @doc xml
Declare @hDoc int

set @doc=(SELECT CONVERT(xml,bulkcolumn,2)
FROM 
OPENROWSET (BULK 'C:\arquivoXML.xml' ,
SINGLE_BLOB) AS XMLDATA)

exec sp_xml_preparedocument @hDoc OUTPUT, @doc 

SELECT *
FROM OPENXML(@hDoc, '/root/row',2)
with ( 
 codigo_cliente varchar (200) 'codigo_cliente'
 ,oab varchar (200) 'oab' 
 ,codigo varchar (200) 'codigo'
 ,processo varchar (200) 'processo'
 ,data datetime 'data'
)

exec sp_xml_removedocument @hDoc 

Observação importante:
o tag "[CDATA]"  do xml é utilizada para conseguirmos importar carácteres
especiais, sem a tag conseguimos importar porém podemos ter problemas com
esse tipo de carácter.  

Qualquer dúvida envio comentários.
até a próxima !


Categorias:Programação

Tags:, , , , , ,

4 respostas

  1. Perfeito! Agora eu preciso que o ” path: bulkload xml ” seja dimanico, algo do tipo assim:
    set @doc=(SELECT CONVERT(xml,bulkcolumn,2)
    FROM
    OPENROWSET (BULK @path_origem,
    SINGLE_BLOB) AS XMLDATA)
    Mas não deu certo.

Deixe uma resposta

%d blogueiros gostam disto: