SQLShack
neste artigo, mostraremos como criar um documento de tipo de dados XML a partir de uma tabela relacional utilizando diferentes formas T-SQL. Por exemplo, para migração de dados, as informações do banco de dados do SQL Server podem ser exportadas e importadas usando XML em outra estrutura. XML é uma maneira padrão de extrair, armazenar e manipular dados. Um aspecto de trabalhar com o tipo de dados XML é criar XML a partir de informações relacionais, o que é feito usando a provisão FOR XML no SQL Server:
Um tipo de dados XML podem ser utilizados de forma alternada no SQL Server. Este artigo explicará alguns usos fundamentais do XML. Para XML keyword é uma disposição que pode ser adicionada com a instrução SELECT query para preparar o documento XML nos formulários necessários em um resultado de consulta. O resultado é uma string Unicode contendo componentes e qualidades controladas pelos diferentes modos determinados na provisão com para XML.
os quatro modos são:
- RAW
- AUTO
- EXPLÍCITO
- CAMINHO
A tabela abaixo mostra dados de exemplo para uma maior clarificação das diferentes metodologias de:
modo AUTOMÁTICO
modo AUTO é uma das abordagens para converter para XML elementos das linhas da tabela. Nomes de elementos do documento XML correspondentes ao alias da coluna ou ao nome da coluna da consulta SELECT.
por exemplo, o resultado da consulta foi produzido com um único documento XML para os dados de amostra acima. O resultado da consulta tinha 5 linhas em um conjunto de resultados, que é alterado para um conjunto de resultados de célula solitária. Essa metodologia é utilizada em uma função de valor único para retornar várias linhas em uma única variável de retorno.
1
2
3
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
FOR XML AUTO;
|
Aqui, AUTO produz utilizar nomes de cabeçalho de tabela de nomes.
modo explícito
para obter mais controle sobre o estilo do XML subsequente, os desenvolvedores SQL podem usar o modo explícito. Com o modo explícito, um resultado de consulta será alterado para um único documento do tipo de dados XML com rótulos e valores XML personalizados. O modo explícito fará um rótulo diferente definido para cada linha em um registro. Mesmo, o modo explícito permite projetar o formato XML como o usuário deseja definir a posição dos elementos no formato de tipo de dados XML na consulta SQL.
abaixo está um exemplo de Uso do modo explícito:
consulta SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
ESCOLHA 1 como a tag
NULL como pai,
user_id como ,
NULL COMO ,
NULL COMO ,
NULL COMO
a PARTIR de user_details
UNION ALL
SELECIONE 3 como tag,
1, seja como pais,
user_id como ,
fname COMO ,
sobrenome COMO ,
email_ COMO
a PARTIR de user_details
UNION ALL
SELECT 2 como marca,
1, seja como pais,
user_id como ,
fname COMO ,
sobrenome COMO ,
email_ COMO
a PARTIR de user_details
ORDEM 3, 1
EXPLICIT PARA XML;
|
Modo EXPLICIT resultado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<utilizador>
<nome fname=”Jo” />
<sobrenome sobrenome=”Marrom” />
</utilizador>
<utilizador>
<nome fname=”Katie” />
<sobrenome sobrenome=”McAskill-Branco” />
</utilizador>
<utilizador>
<nome fname=”Mihail” />
<sobrenome sobrenome=”Frintu” />
</utilizador>
<utilizador>
<nome fname=”Jimmy” />
<sobrenome sobrenome=”Bischoff” />
</utilizador>
<utilizador>
<nome fname=”Alan” />
<sobrenome sobrenome=”Cervejeiro” />
</utilizador>
|
modo RAW
o modo mais comum e frequentemente usado pelos desenvolvedores para fazer XML dentro para XML é o modo RAW. Basicamente, o modo RAW produz um elemento chamado “Linha” a partir do conjunto de resultados para cada linha na articulação SELECT, e o valor da célula da linha será limitado como um atributo do elemento. Em um modo RAW, cada coluna será tratada como um elemento no XML, e as colunas dessas linhas serão atribuídas ao mesmo elemento. O modo RAW é usado para alterar cada linha no conjunto de resultados em um componente XML.
Para LINHA modo, consultar vários modelos com diferentes saídas explicado nos exemplos abaixo:
Exemplo 1
1
2
3
4
5
6
7
8
9
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
PARA XML MATÉRIAS
<linha user_id=”1″ nome=”Jo” sobrenome=”Marrom” email_=”[email protected]” />
<linha user_id=”2″ nome=”Katie” sobrenome=”McAskill-Branco” email_=”[email protected]” />
<linha user_id=”3″ nome=”Mihail” sobrenome=”Frintu” email_=”[email protected]” />
<linha user_id=”4″ nome=”Jimmy” sobrenome=”Bischoff” email_=”[email protected]” />
<linha user_id=”5″ fname=”Alan” sobrenome=”Cervejeiro” email_=”[email protected]” />
|
Usando o modo RAW, o cabeçalho de cada elemento é definida como um elemento de linha no resultado XML e as colunas de cada linha estão sendo atribuídas dentro do elemento de linha do tipo de dados XML de resultado.
Exemplo 2
1
2
3
4
5
6
7
8
9
10
11
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
PARA XML BRUTO(‘usuário’), RAIZ
<raiz>
<usuário user_id=”1″ nome=”Jo” sobrenome=”Marrom” email_=”[email protected]” />
<usuário user_id=”2″ nome=”Katie” sobrenome=”McAskill-Branco” email_=”[email protected]” />
<usuário user_id=”3″ nome=”Mihail” sobrenome=”Frintu” email_=”[email protected]” />
<usuário user_id=”4″ nome=”Jimmy” sobrenome=”Bischoff” email_=”[email protected]” />
<usuário user_id=”5″ fname=”Alan” sobrenome=”Cervejeiro” email_=”[email protected]” />
</raiz>
|
Se o usuário deseja incluir todos os elementos em uma única tag, em seguida, a opção ROOT com o modo não processado podem ser utilizados e cada elemento do nome do cabeçalho pode ser definido pelo usuário adicionando um nome com a matéria-prima() o tipo de dados XML de resultado.
Exemplo 3
1
2
3
4
5
6
7
8
9
10
11
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
PARA XML BRUTO(‘usuário’), RAIZ(‘UserDetails’)
<UserDetails>
<usuário user_id=”1″ nome=”Jo” sobrenome=”Marrom” email_=”[email protected]” />
<usuário user_id=”2″ nome=”Katie” sobrenome=”McAskill-Branco” email_=”[email protected]” />
<usuário user_id=”3″ nome=”Mihail” sobrenome=”Frintu” email_=”[email protected]” />
<usuário user_id=”4″ nome=”Jimmy” sobrenome=”Bischoff” email_=”[email protected]” />
<usuário user_id=”5″ fname=”Alan” sobrenome=”Cervejeiro” email_=”[email protected]” />
</UserDetails>
|
No XML de MATÉRIAS-RAIZ, o cabeçalho pode ser projetado com um nome definido pelo usuário com a RAIZ(). Como pode ser visto no exemplo, o <root> elemento é substituído por <UserDetails>
Exemplo 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
PARA XML MATÉRIAS, ELEMENTOS
<linha>
<user_id>1</user_id>
<fname>Jo</fname>
<sobrenome>Marrom</sobrenome>
<email_>[email protected]</email_>
</linha>
<linha>
<user_id>2</user_id>
<fname>Katie</fname>
<sobrenome>McAskill-Branco</sobrenome>
<email_>[email protected]</email_>
</linha>
|
Usando o ELEMENTO de diretiva com o modo RAW, o usuário pode fazer a linha-elemento estrutura baseada em XML. Cada célula da linha está sendo extraída com elementos XML dentro do elemento pai da linha como <linha>. Basicamente, usamos a palavra-chave ELEMENTS na consulta acima para exibir as colunas como elementos no XML de saída.
modo de caminho
o melhor modo para criar XML com mais controle sobre o formato é o modo de caminho. Usando o caminho, o usuário pode compor articulações de seleção e fornecimento XPATH mais diretas para a coluna atribuir uma cadeia de comando. Use para caminho XML com subconsultas para obter o documento de tipo de dados XML adequado com a cadeia elemento-atributo:
1
2
3
4
5
6
7
8
9
10
11
|
SELECIONE user_id, nome, sobrenome, email_
a PARTIR de user_details
ONDE email_ = ‘[email protected]’
PARA XML PATH;
<linha>
<user_id>3</user_id>
<fname>Mihail</fname>
<sobrenome>Frintu</sobrenome>
<email_>[email protected]</email_>
</linha>
|
Conclusão
Usando um servidor de resultado de consulta para alcançar um outro formato XML é simples. O resultado da consulta será extraído em XML, incluindo uma frase de efeito para XML no final da instrução SELECT. Conforme discutido, temos várias alternativas para estruturar ou organizar o resultado com colunas para atributos ou nós XML com o tipo de dados XML.
- Autor
- Posts Recentes
Ver todos os posts por Jignesh Raiyani
- Expectativa de Vida da Página (PLE) no SQL Server – 17 de julho de 2020
- Como automatizar o Particionamento de tabelas no SQL Server – julho 7, 2020
- Configuração do SQL Server Sempre Em Grupos de Disponibilidade AWS EC2 – julho 6, 2020