Dominar integrações é uma habilidade importante para técnicos que ganham como diretores, seja para fazer troubleshooting ou implementar processos de gestão do negócio.
Nesse contexto, mostrarei como importar e exportar XML no SQL com apenas uma linha de comando, além de converter tabelas do SQL para XML, também com apenas uma linha de comando!
Confira aqui:
Script da aula
------------------------------------------------------------------
-- Como importar arquivos XML no SQL
------------------------------------------------------------------
--------------------------------------------------
-- Requisitos para o teste
--------------------------------------------------
/*
== Salvar em "c:\tmp\pessoas.xml" o seguinte conteúdo:
<pessoas>
<pessoa id="1">
<nm>Priscila Laborão</nm>
<profissao>Recrutadora</profissao>
</pessoa>
<pessoa id="2">
<nm>Tiragato Dakatola</nm>
<profissao>Mágico</profissao>
</pessoa>
<pessoa id="3">
<nm>Ric Wyndfuck</nm>
<profissao>Usineiro</profissao>
</pessoa>
</pessoas>
*/
--------------------------------------------------
-- Arquivo XML =&gt; Variável
--------------------------------------------------
declare @x xml = (select bulkcolumn from openrowset (bulk 'c:\tmp\pessoas.xml', single_clob) a) -- single_blob = binário | single_clob = texto
select @x as [xml]
--------------------------------------------------
-- Variável XML =&gt; Tabela
--------------------------------------------------
select
pessoas.pessoa.value('@id[1]', 'int') as id,
pessoas.pessoa.value('nm[1]', 'varchar(100)') as nm,
pessoas.pessoa.value('profissao[1]', 'varchar(100)') as profissao
from @x.nodes('pessoas/pessoa') as pessoas(pessoa)
--------------------------------------------------
-- Tabela =&gt; Variável XML
--------------------------------------------------
-- Tabela relacional
declare @pessoas table (id int, nm varchar(100), profissao varchar(100))
insert into @pessoas values
(1, 'Priscila Laborão', 'Recrutadora'),
(2, 'Tiragato Dakatola', 'Analista de TI'),
(3, 'Ric Wyndfuck', 'Usineiro')
-- Conversão de tabela para XML com XML AUTO
select
*
from @pessoas as pessoa
for xml auto, root('pessoas'), elements
-- Conversão de tabela para XML com XML AUTO, ELEMENTS
select
*
from @pessoas as pessoa
for xml auto, root('pessoas'), elements
-- Conversão de tabela para XML com XML PATH
select
id as "@id", -- @alias define o campo como "atributo" ao invés de "elemento"
nm,
profissao
from @pessoas
for xml path ('pessoa'), root ('pessoas')
go