Gerando arquivos XML com SQL Server

A partir do SQL Server 2000 é possível extrair de um banco de dados, de maneira direta, dados no formato XML.  Esta funcionalidade é de grande ajuda quando falamos de integrações com diversos sistemas, ou extrações de dados para relatórios, dispositivos móveis, arquivos portáveis e etc.

Para gerar um arquivo XML utilizamos a instrução FOR XML, que pode vir acompanhada das opções: RAW, AUTO e EXPLICIT.

Por exemplo, a instrução abaixo:

SELECT cdcliente, nmcliente

      FROM dbo.cliente FOR XML raw

Essa instrução nos retornará o seguinte XML:

<row cdcliente=“1” nmcliente=“SQL Server Day”/>

<row cdcliente=“2” nmcliente=“DotNetDay”/>

<row cdcliente=“3” nmcliente=“SQL Saturday Night”/>

<row cdcliente=“4” nmcliente=“Cliente A”/>

<row cdcliente=“5” nmcliente=“Cliente B”/>

<row cdcliente=“6” nmcliente=“Cliente C”/>

<row cdcliente=“7” nmcliente=“Cliente D”/>

A instrução FOR XML com a opção RAW cria o elemento ROW e cada campo é transformado em atributo desse elemento.

A instrução FOR XML com a opção AUTO utiliza o nome da tabela como delimitador de elementos, essa opção pode vir acompanhada do argumento opcional ELEMENT acompanhe o código a seguir:

SELECT cdcliente, nmcliente

      FROM dbo.cliente FOR XML AUTO, ELEMENTS

Este código irá gerar o retorno abaixo:

<dbo.cliente>
    <cdcliente>1</cdcliente>
    <nmcliente>SQL Server Day</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>2</cdcliente>
    <nmcliente>DotNetDay</nmcliente>
</dbo.cliente>
    <dbo.cliente><cdcliente>3</cdcliente>
    <nmcliente>SQL Saturday Night</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>4</cdcliente>
    <nmcliente>Cliente A</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>5</cdcliente>
    <nmcliente>Cliente B</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>6</cdcliente>
    <nmcliente>Cliente C</nmcliente>
</dbo.cliente>
<dbo.cliente>
    <cdcliente>7</cdcliente>
    <nmcliente>Cliente D</nmcliente>
</dbo.cliente>

É importante lembrar que o arquivo XML deve ser composto de u elemento Raíz, veja o retorno à cima com o elemento Raíz:

<Cliente>    
    <dbo.cliente>
        <cdcliente>1</cdcliente>
        <nmcliente>SQL Server Day</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>2</cdcliente>
        <nmcliente>DotNetDay</nmcliente>
    </dbo.cliente>
        <dbo.cliente><cdcliente>3</cdcliente>
        <nmcliente>SQL Saturday Night</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>4</cdcliente>
        <nmcliente>Cliente A</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>5</cdcliente>
        <nmcliente>Cliente B</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>6</cdcliente>
        <nmcliente>Cliente C</nmcliente>
    </dbo.cliente>
    <dbo.cliente>
        <cdcliente>7</cdcliente>
        <nmcliente>Cliente D</nmcliente>
    </dbo.cliente>
</Cliente>

É muito simples fazer extração para XML desta forma. Aguardo comentários, dúvidas ou sugestões.

Abraços, Rodrigo

Author: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

2 thoughts on “Gerando arquivos XML com SQL Server

Deixe uma resposta