SQLShack

In questo articolo, mostreremo come creare un documento di tipo dati XML da una tabella relazionale utilizzando diversi modi T-SQL. Ad esempio, per la migrazione dei dati, le informazioni dal database SQL Server possono essere esportate e importate utilizzando XML in un altro framework. XML è un modo standard di estrazione, memorizzazione e manipolazione dei dati. Un aspetto del lavoro con il tipo di dati XML è la creazione di XML da informazioni relazionali, che viene eseguita utilizzando il provisioning FOR XML in SQL Server:

 Documento da tabella a XML

Tabella a documento XML

Un tipo di dati XML può essere utilizzato in modo alternativo in SQL Server. Questo articolo spiegherà alcuni usi fondamentali di XML. PER la parola chiave XML è una disposizione che può essere aggiunta con l’istruzione SELECT query per preparare il documento XML nei moduli richiesti in un risultato di query. Il risultato è una stringa Unicode contenente componenti e qualità controllate dalle diverse modalità determinate nel provisioning with FOR XML.

Le quattro modalità sono:

  • RAW
  • AUTO
  • ESPLICITO
  • PERCORSO

La tabella che segue mostra dati di esempio per chiarire ulteriormente le varie metodologie:

tabella di esempio

tabella di esempio

modalità AUTO

modalità AUTO è uno degli approcci per la converte oltre agli elementi XML dalle righe della tabella. Nomi degli elementi del documento XML corrispondenti all’alias della colonna o al nome della colonna della query SELECT.

Ad esempio, il risultato della query è stato prodotto con un singolo documento XML per i dati di esempio sopra riportati. Il risultato della query aveva 5 righe in un set di risultati, che viene modificato in un set di risultati di celle solitarie. Questa metodologia viene utilizzata in una funzione a valore singolo per restituire più righe in una singola variabile di ritorno.

1
2
3

SELECT id_utente, fname, lname, email_
DA user_details
FOR XML AUTO;

Tipo di dati da tabella a XML

Tipo di dati da tabella a XML

Qui, AUTO produce nomi di intestazione utilizzando nomi di tabelle.

Modalità ESPLICITA

Per un maggiore controllo sullo stile del successivo XML, gli sviluppatori SQL possono utilizzare la modalità ESPLICITA. Con la modalità ESPLICITA, un risultato della query verrà modificato in un singolo documento di tipo dati XML con etichette e valori XML personalizzati. La modalità ESPLICITA creerà un set di etichette diverso per ogni riga di un record. Anche, la modalità ESPLICITA permette di progettare il formato XML come l’utente vuole impostare la posizione degli elementi nel formato di tipo di dati XML in query SQL.

Di seguito è riportato un esempio di utilizzo della modalità ESPLICITA:

Query 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

SELEZIONARE 1 come tag,
NULL, padre,
user_id come ,
NULL ,
NULL ,
NULL
DA user_details
UNIONE
SELEZIONARE 3 come tag,
1 come padre,
user_id come ,
fname COME ,
lname COME ,
email_ COME
DA user_details
UNIONE
SELEZIONARE 2 come tag,
1 come padre,
user_id come ,
fname COME ,
lname COME ,
email_ COME
DA user_details
ORDINE DA 3, 1
PER XML ESPLICITO;

Modalità ESPLICITA risultato:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

<utente>
<fname fname=”Jo” />
<lname lname=”Brown” />
</utente>
<utente>
<fname fname=”Katie” />
<lname lname=”McAskill-Bianco” />
</utente>
<utente>
<fname fname=”Mihail” />
<lname lname=”Frintu” />
</utente>
<utente>
<fname fname=”Jimmy” />
<lname lname=”Bischoff” />
</utente>
<utente>
<fname fname=”Alan” />
<lname lname=”Brewer” />
</utente>

 Modalità ESPLICITA

Modalità ESPLICITA

Modalità RAW

La modalità più comune e spesso utilizzata dagli sviluppatori per creare XML all’interno di XML è la modalità RAW. Fondamentalmente, la modalità RAW emette un elemento denominato ” row ” dal set di risultati per ogni riga nell’articolazione SELECT e il valore della cella della riga verrà limitato come attributo dell’elemento. In una modalità RAW, ogni colonna verrà trattata come un elemento nell’XML e le colonne di quelle righe saranno attribuite allo stesso elemento. La modalità RAW viene utilizzata per modificare ogni riga del set di risultati in un componente XML.

Per RIGA modalità diverse query di modelli con diverse uscite illustrato negli esempi seguenti:

Esempio 1

1
2
3
4
5
6
7
8
9

SELECT id_utente, fname, lname, email_
DA user_details
PER XML RAW
<riga user_id=”1″ fname=”Jo” lname=”Brown” email_=”[email protected]” />
<riga user_id=”2″ fname=”Katie” lname=”McAskill-Bianco” email_=”[email protected]” />
<riga user_id=”3″ fname=”Mihail” lname=”Frintu” email_=”[email protected]” />
<riga user_id=”4″ fname=”Jimmy” lname=”Bischoff” email_=”[email protected]” />
<riga user_id=”5″ fname=”Alan” lname=”Birraio” email_=”[email protected]” />

Utilizzando la modalità RAW, l’intestazione di ciascun elemento è definita come un elemento di riga nel risultato XML e le colonne di ogni riga vengono attribuite all’interno dell’elemento riga nel risultato del tipo di dati XML.

Esempio 2

1
2
3
4
5
6
7
8
9
10
11

SELECT id_utente, fname, lname, email_
DA user_details
PER XML RAW (“utente”), RADICE
<root>
<utente id_utente=”1″ fname=”Jo” lname=”Brown” email_=”[email protected]” />
<utente id_utente=”2″ fname=”Katie” lname=”McAskill-Bianco” email_=”[email protected]” />
<utente id_utente=”3″ fname=”Mihail” lname=”Frintu” email_=”[email protected]” />
<utente id_utente=”4″ fname=”Jimmy” lname=”Bischoff” email_=”[email protected]” />
<utente id_utente=”5″ fname=”Alan” lname=”Birraio” email_=”[email protected]” />
</radice>

Se l’utente desidera includere tutti gli elementi in un singolo tag, è possibile utilizzare l’opzione ROOT con la modalità RAW e il nome dell’intestazione di ogni elemento può essere definito dall’utente aggiungendo un nome con RAW() nel risultato del tipo di dati XML.

Esempio 3

1
2
3
4
5
6
7
8
9
10
11

SELECT id_utente, fname, lname, email_
DA user_details
PER XML RAW (“utente”), RADICE(‘UserDetails’)
<UserDetails>
<utente id_utente=”1″ fname=”Jo” lname=”Brown” email_=”[email protected]” />
<utente id_utente=”2″ fname=”Katie” lname=”McAskill-Bianco” email_=”[email protected]” />
<utente id_utente=”3″ fname=”Mihail” lname=”Frintu” email_=”[email protected]” />
<utente id_utente=”4″ fname=”Jimmy” lname=”Bischoff” email_=”[email protected]” />
<utente id_utente=”5″ fname=”Alan” lname=”Birraio” email_=”[email protected]” />
</Dettagli utente>

Nella RADICE RAW XML, l’intestazione può essere progettata con un nome definito dall’utente con ROOT(). Come si può vedere nell’esempio, il <root> elemento è sostituito dal <UserDetails>

Esempio 4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

SELECT id_utente, fname, lname email_
DA user_details
PER XML RAW, ELEMENTI
<riga>
<user_id>1</id_utente>
<fname>Jo</fname>
<lname>Marrone</lname>
<email_>[email protected]</email_>
</riga>
<riga>
<user_id>2</id_utente>
<fname>Katie</fname>
<lname>McAskill-Bianco</lname>
<email_>[email protected] < / e-mail_>
</riga>

Utilizzando la direttiva ELEMENT con la modalità RAW, l’utente può creare XML basato sulla struttura degli elementi di riga. Ogni cella della riga viene estratta con elementi XML all’interno dell’elemento genitore della riga come <riga>. Fondamentalmente, abbiamo usato la parola chiave ELEMENTS nella query sopra per visualizzare le colonne come elementi nell’XML di output.

Modalità PERCORSO

La modalità migliore per creare XML con un maggiore controllo sul formato è la modalità PERCORSO. Utilizzando il percorso, l’utente può comporre più semplice SELEZIONARE e fornire articolazioni XPATH per la colonna per assegnare una catena di comando. Utilizzare PER il PERCORSO XML con sottoquery per ottenere il documento di tipo di dati XML corretto con la catena di attributi elemento:

1
2
3
4
5
6
7
8
9
10
11

SELECT id_utente, fname, lname, email_
DA user_details
DOVE email_ = ‘[email protected]
PER XML PATH;
<riga>
<user_id>3</id_utente>
<fname>Mihail</fname>
<lname>Frintu</lname>
<email_>[email protected]</email_>
</riga>

Conclusione

l’Utilizzo di un server di risultati della query per ottenere un altro formato XML è semplice. Il risultato della query verrà estratto in XML includendo uno slogan FOR XML alla fine dell’istruzione SELECT. Come discusso, abbiamo una serie di alternative per strutturare o organizzare il risultato con colonne di attributi o nodi XML con il tipo di dati XML.

  • Autore
  • Post Recenti
Jignesh Raiyani
Jignesh ha una buona esperienza in Soluzioni di Database e Architettura, lavorando con più clienti sulla Progettazione di Database & Architettura, SQL, Sviluppo, Amministrazione, Ottimizzazione di Query, l’Ottimizzazione delle Prestazioni, HA e di Disaster Recovery.
Visualizza tutti i messaggi di Jignesh Raiyani

Jignesh Raiyani
Ultimi messaggi di Jignesh Raiyani (vedi tutti)
  • Pagina Aspettativa di Vita (PLE) in SQL Server – luglio 17, 2020
  • Come automatizzare il Partizionamento delle tabelle in SQL Server – 7 luglio 2020
  • Configurazione di SQL Server Sempre In Gruppi di Disponibilità su AWS EC2 – luglio 6, 2020

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.