SQLSHACK

în acest articol, vom arăta cum să creați un document de tip de date XML dintr-un tabel relațional utilizând diferite moduri T-SQL. De exemplu, pentru migrarea datelor, Informațiile din Baza de date SQL Server pot fi exportate și importate folosind XML într-un alt cadru. XML este un mod standard de extragere, stocare și manipulare a datelor. Un aspect de lucru cu tipul de date XML este crearea XML de informații relaționale, care se face folosind pentru furnizarea XML în SQL Server:

tabel pentru documentul XML

tabel la document XML

un tip de date XML poate fi utilizat într-o manieră alternativă în SQL Server. Acest articol va explica câteva utilizări fundamentale ale XML. Pentru XML keyword este o prevedere care poate fi adăugată cu instrucțiunea SELECT query pentru a pregăti documentul XML în formularele necesare într-un rezultat de interogare. Rezultatul este un șir Unicode care conține componente și calități controlate de diferitele moduri determinate în dispoziția cu XML.

cele patru moduri sunt:

  • RAW
  • AUTO
  • EXPLICIT
  • cale

tabelul de mai jos prezintă date eșantion pentru clarificarea în continuare a diferitelor metodologii:

tabel de probă

exemplu de tabel

mod automat

mod automat este una dintre abordările pentru convertește la elementele XML din rândurile tabelului. Numele elementelor documentului XML corespunzător aliasului coloanei sau numele coloanei interogării SELECT.

de exemplu, rezultatul interogării a fost produs cu un singur document XML pentru datele eșantion de mai sus. Rezultatul interogării a avut 5 rânduri într-un set de rezultate, care este schimbat într-o celulă solitară set de rezultate. Această metodologie este utilizată într-o funcție cu o singură valoare pentru a returna mai multe rânduri într-o singură variabilă de returnare.

1
2
3

selectați user_id, fname, lname, email_
din user_details
pentru XML AUTO;

tabel pentru tipul de date XML

tabel la tipul de date XML

aici, auto produce nume de antet utilizând nume de tabel.

mod EXPLICIT

pentru mai mult control asupra stilului XML ulterior, dezvoltatorii SQL pot utiliza modul EXPLICIT. Cu modul EXPLICIT, un rezultat al interogării va fi schimbat într-un singur document de tip de date XML cu etichete și valori XML personalizate. Modul EXPLICIT va face o etichetă diferită setată pentru fiecare rând dintr-o înregistrare. Chiar și modul EXPLICIT permite proiectarea formatului XML, deoarece utilizatorul dorește să stabilească poziția elementelor în formatul de tip de date XML în interogarea SQL.

mai jos este un exemplu de utilizare a modului EXPLICIT:

interogare 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

selectați 1 ca etichetă,
NULL ca părinte,
user_id ca,
NULL ca,
NULL ca,
NULL ca
din user_details
Uniunea toate
selectați 3 ca tag,
1 ca părinte,
user_id ca ,
fname ca ,
lname ca ,
email_ ca
din user_details
Uniunea toate
selectați 2 ca tag,
1 ca părinte,
user_id ca ,
fname ca ,
lname ca ,
lname ca,
email_ ca
de la USER_DETAILS
comanda de 3, 1
pentru XML Explicit;

rezultatul modului EXPLICIT:

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

<utilizator>
<fname fname= „Jo” />
<lname lname= „maro” />
</utilizator>
<utilizator>
<fname fname= „Katie” />
<lname lname=”McAskill-Alb” />
</utilizator>
<utilizator>
<fname fname= „Mihail” />
<lname lname= „Frintu” />
</utilizator>
<utilizator>
<fname fname= „Jimmy” />
<lname lname= „Bischoff” />
</utilizator>
<utilizator>
<fname fname= „Alan” />
<lname lname= „Brewer” />
</utilizator>

mod EXPLICIT

mod EXPLICIT

mod RAW

modul cel mai frecvent și adesea utilizat de dezvoltatori pentru a face XML în XML este modul RAW. Practic, modul RAW emite un element numit” rând ” din setul de rezultate pentru fiecare rând din articulația SELECT, iar valoarea celulei rândului va fi delimitată ca atribut al elementului. Într-un mod RAW, fiecare coloană va fi tratată ca un element în XML, iar coloanele acestor linii vor fi atribuite aceluiași element. Modul RAW este utilizat pentru a schimba fiecare rând din setul de rezultate într-o componentă XML.

pentru modul rând, diferite modele de interogare cu ieșiri diferite explicate în exemplele de mai jos:

exemplu 1

1
2
3
4
5
6
7
8
9

selectați user_id, fname, lname, email_
din user_details
pentru XML RAW
< row user_id=”1″ fname=”Jo” lname=”Brown” email_=”[email protected]” />
<row user_id=” 2″fname=” Katie”lname=” McAskill-Alb”email_= „[email protected]” />
< row user_id= ” 3 „fname= „Mihail” lname=” Frintu”email_= „[email protected]” />
< row user_id= ” 4 „fname=” Jimmy ” lname=” Bischoff”email_= „[email protected]” />
< rând user_id=” 5″fname=” Alan”lname=” Brewer”email_=” [email protected]ări.com” />

folosind modul RAW, antetul fiecărui element este definit ca un element rând în rezultatul XML și coloanele fiecărui rând sunt atribuite în interiorul elementului rând în rezultatul XML tip de date.

exemplu 2

1
2
3
4
5
6
7
8
9
10
11

selectați user_id, fname, lname, email_
din user_details
pentru XML RAW (‘utilizator’), ROOT
<root>
<utilizator user_id=”1″ fname=”Jo” lname=”maro” email_= ” [email protected]ări.com” />
<utilizator user_id=” 2″fname=” Katie”lname=” McAskill-Alb”email_= „[email protected]” />
< utilizator user_id= ” 3 „fname= „Mihail” lname=” Frintu”email_= „[email protected]” />
< utilizator user_id= ” 4 „fname=” Jimmy ” lname=” Bischoff”email_= „[email protected]” />
< utilizator user_id=” 5″fname=” Alan”lname=” Brewer”email_=” [email protected]” />
</rădăcină>

dacă utilizatorul dorește să includă toate elementele într-o singură etichetă, atunci opțiunea ROOT cu modul RAW poate fi utilizată și numele antetului fiecărui element poate fi definit de utilizator prin adăugarea unui nume cu RAW() în rezultatul tipului de date XML.

exemplu 3

1
2
3
4
5
6
7
8
9
10
11

selectați user_id, fname, lname, email_
din user_details
pentru XML RAW (‘user’), ROOT (‘UserDetails’)
<Detalii utilizator>
<utilizator user_id=”1″ fname=”Jo” lname=”maro” email_= ” [email protected]ări.com” />
<utilizator user_id=” 2″fname=” Katie”lname=” McAskill-Alb”email_= „[email protected]” />
< utilizator user_id= ” 3 „fname= „Mihail” lname=” Frintu”email_= „[email protected]” />
< utilizator user_id= ” 4 „fname=” Jimmy ” lname=” Bischoff”email_= „[email protected]” />
< utilizator user_id=” 5″fname=” Alan”lname=” Brewer”email_=” [email protected]” />
</Detalii utilizator>

în rădăcina XML RAW, antetul poate fi proiectat cu un nume definit de utilizator cu ROOT(). După cum se poate observa în exemplu, elementul rădăcină < > este înlocuit cu < UserDetails>

exemplu 4

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

selectați user_id, fname, lname, email_
din user_details
pentru XML RAW, elemente
<rând>
< ID utilizator> 1< / ID utilizator>
<fname>Jo < /fname>
<nume > maro < / nume>
<email_>[email protected]< / e-mail_>
</rând>
<rând>
<ID utilizator> 2 < / ID utilizator>
<fname>Katie </fname>
<nume > McAskill-Alb< / nume>
<email_ >[email protected]ări.com< / e-mail_>
</rând>

folosind Directiva ELEMENT cu modul RAW, utilizatorul poate face XML pe bază de structură rând-element. Fiecare celulă a rândului este extrasă cu elemente XML în interiorul elementului părinte al rândului ca < rând>. Practic, am folosit cuvântul cheie ELEMENTS în interogarea de mai sus pentru a afișa coloanele ca elemente în XML de ieșire.

mod cale

cel mai bun mod pentru crearea XML cu mai mult control asupra formatului este modul cale. Folosind calea, utilizatorul poate compune mai simplu selectați și să furnizeze articulații XPATH pentru coloana pentru a atribui un lanț de comandă. Utilizați pentru calea XML cu subqueries pentru a obține documentul de tip de date XML adecvat cu lanțul element-atribut:

1
2
3
4
5
6
7
8
9
10
11

selectați user_id, fname, lname, email_
din user_details
unde email_ = ‘[email protected]
pentru calea XML;
< rând>
<ID utilizator> 3 < / ID utilizator>
<fname>Mihail </fname>
<nume > Frintu< / nume>
<email_>[email protected]< / e-mail_>
</rând>

concluzie

utilizarea unui rezultat al interogării serverului pentru a obține un format XML diferit este simplă. Rezultatul interogării va fi extras în XML prin includerea unei fraze pentru XML la sfârșitul instrucțiunii SELECT. După cum sa discutat, avem o serie de alternative pentru a structura sau aranja rezultatul cu coloane la atribute sau noduri XML cu tipul de date XML.

  • autor
  • Postări recente
Jignesh Raiyani
Jignesh are o experiență bună în soluții de baze de date și arhitectură, lucrând cu mai mulți clienți în proiectarea bazelor de date & Arhitectură, dezvoltare SQL, administrare, optimizare interogare, reglare performanță, HA și recuperare în caz de dezastru.
Vezi toate mesajele de Jignesh Raiyani

Jignesh Raiyani
ultimele postări de Jignesh Raiyani (vezi toate)
  • speranța de viață a paginii (PLE) în SQL Server-17 Iulie 2020
  • cum se automatizează partiționarea tabelelor în SQL Server-7 iulie 2020
  • Configurarea SQL Server Always On Availability Groups pe AWS EC2-iulie 6, 2020

Leave a Reply

Adresa ta de email nu va fi publicată.