SQLShack

i den här artikeln visar vi hur du skapar ett XML-datatypsdokument från en relationstabell med olika T-SQL-sätt. Till exempel för datamigrering kan information från SQL Server-databasen exporteras och importeras med XML i ett annat ramverk. XML är ett vanligt sätt att extrahera, lagra och manipulera data. En aspekt av att arbeta med XML – datatypen är att skapa XML från relationell information, vilket görs med hjälp av for XML-bestämmelsen i SQL Server:

tabell till XML-dokument

tabell till XML-dokument

en XML-datatyp kan användas på ett alternativt sätt i SQL Server. Denna artikel kommer att förklara några grundläggande användningar av XML. För XML-nyckelord är en bestämmelse som kan läggas till med select query-satsen för att förbereda XML-dokumentet i de obligatoriska formulären i ett frågeresultat. Resultatet är en Unicode-sträng som innehåller komponenter och kvaliteter som styrs av de olika lägena som bestäms i bestämmelsen med för XML.

de fyra lägena är:

  • RAW
  • AUTO
  • EXPLICIT
  • sökväg

tabellen nedan visar provdata för ytterligare förtydligande av de olika metoderna:

provtabell

exempeltabell

autoläge

autoläge är en av metoderna för att konvertera över till XML-elementen från raderna i tabellen. Elementnamn på XML-dokumentet som motsvarar kolumnaliaset eller kolumnnamnet på SELECT-frågan.

till exempel har frågeresultatet producerats med ett enda XML-dokument för ovanstående exempeldata. Frågeresultatet hade 5 rader i en resultatuppsättning, som ändras till en ensamcellsresultatuppsättning. Denna metod används i en enda värderad funktion för att returnera flera rader i en enda returvariabel.

1
2
3

välj user_id, fname, lname, email_
från user_details
för XML AUTO;

tabell till XML-datatyp

tabell till XML-datatyp

här producerar AUTO rubriknamn som använder tabellnamn.

EXPLICIT läge

för mer kontroll över stylingen av den efterföljande XML kan SQL-utvecklare använda EXPLICIT läge. Med EXPLICIT läge ändras ett frågeresultat till ett enda XML – datatypsdokument med anpassade XML-etiketter och värden. Det explicita läget gör en annan etikettuppsättning för varje rad i en post. Även tillåter EXPLICIT läge utforma XML-format som användaren vill ställa in positionen för elementen i XML – datatyp format i SQL-fråga.

nedan är ett exempel på att använda EXPLICIT läge:

SQL-fråga:

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

välj 1 som tagg,
NULL som överordnad,
user_id as,
NULL AS,
NULL AS ,
NULL AS,
NULL AS
från user_details
UNION ALL
Välj 3 som tagg,
1 som överordnad,
user_id as ,
fname AS ,
lname AS ,
email_ AS
från user_details
Union alla
välj 2 som tagg,
1 som överordnad,
user_id as ,
fname as ,
LNAME as ,
email_ som
från user_details
beställ med 3, 1
för XML explicit;

EXPLICIT läge resultat:

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

<användare>
<fname fname= ”Jo” />
<LNAME lname=”brun” />
</användare>
<användare>
<fname fname=”Katie” />
< lname lname= ”McAskill-Vit” />
</användare>
<användare>
<fname fname= ”Mihail” />
<lname LNAME= ”Frintu” />
</användare>
<användare>
<fname fname= ”Jimmy” />
<lname lname= ”Bischoff” />
</användare>
<användare>
<fname fname=”Alan” />
<lname LNAME= ”bryggeri” />
</användare>

EXPLICIT läge

EXPLICIT läge

RAW-läge

det vanligaste och ofta använda läget av utvecklare för att göra XML inom för XML är RAW-läget. I grund och botten matar RAW-läget ut ett element som heter ”rad” från resultatuppsättningen för varje rad i SELECT-artikulationen, och cellvärdet för raden kommer att begränsas som ett attribut för elementet. I ett RAW-läge kommer varje kolumn att behandlas som ett element i XML, och kolumner av dessa rader kommer att tillskrivas samma element. RAW-läge används för att ändra varje rad i resultatuppsättningen till en XML-komponent.

för RADLÄGE, olika frågemodeller med olika utgångar förklaras i exemplen nedan:

exempel 1

1
2
3
4
5
6
7
8
9

välj user_id, fname, lname, email_
från user_details
för XML RAW
<row user_id=”1″ fname=”Jo” lname=”Brown” email_=”[email protected]” />
<row user_id= ” 2 ”fname=” Katie ”lname=” McAskill-White ” 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]” />
< row user_id=” 5″fname=” Alan”lname=” Brewer”email_=” [email protected]” />

med RAW-läge definieras rubriken för varje element som ett radelement i XML-resultatet och kolumnerna för varje rad tillskrivs inuti radelementet i XML-datatypresultatet.

exempel 2

1
2
3
4
5
6
7
8
9
10
11

välj user_id, fname, lname, email_
från user_details
för XML RAW (’användare’), ROOT
< root>
<användare user_id=”1″ fname=”Jo” lname=”Brown” email_= ” [email protected]” />
<user user_id= ” 2 ”fname=” Katie ”lname=” McAskill-White ” email_=”[email protected]” />
<user user_id= ” 3 ”fname=” Mihail ”lname= ”Frintu”email_= ”[email protected]” />
< user user_id= ” 4 ” fname=”Jimmy” lname= ”Bischoff”email_= ”[email protected]” />
< användare user_id=”5″ fname=”Alan” lname=”Brewer” email_= ” [email protected]” />
</rot>

om användaren vill inkludera alla element i en enda tagg kan ROTALTERNATIVET med RAW-läget användas och varje Elements rubriknamn kan definieras av användaren genom att lägga till ett namn med RAW() i XML-datatypresultatet.

exempel 3

1
2
3
4
5
6
7
8
9
10
11

välj user_id, fname, lname, email_
från user_details
för XML RAW (’användare’), ROOT (’UserDetails’)
<användaruppgifter>
<användare user_id=”1″ fname=”Jo” lname=”Brown” email_= ” [email protected]” />
<user user_id= ” 2 ”fname=” Katie ”lname=” McAskill-White ” email_=”[email protected]” />
<user user_id= ” 3 ”fname=” Mihail ”lname= ”Frintu”email_= ”[email protected]” />
< user user_id= ” 4 ” fname=”Jimmy” lname= ”Bischoff”email_= ”[email protected]” />
< användare user_id=”5″ fname=”Alan” lname=”Brewer” email_= ” [email protected]” />
</användaruppgifter>

i XML RAW-roten kan rubriken utformas med ett användardefinierat namn med roten(). Som det kan ses i exemplet ersätts <root> – elementet med<UserDetails>

exempel 4

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

välj user_id, fname, lname, email_
från user_details
för XML RAW, element
< rad>
< user_id> 1< / user_id>
<fname> Jo < / fname>
<lnamn>brun </lnamn>
<e-post_>[email protected] < / email_>
</rad>
<rad>
<user_id> 2< / user_id>
<fname>Katie </fname>
<lname> Mcaskill-Vit< / lname>
<email_>katie0 @ äventyr-verk.com< / email_>
</rad>

med hjälp av ELEMENTDIREKTIVET med RAW-läget kan användaren göra radelement strukturbaserad XML. Varje cell i raden extraheras med XML-element inuti det överordnade elementet i raden som <rad>. I grund och botten använde vi nyckelordet element i ovanstående Fråga för att visa kolumnerna som element i XML-utdata.

SÖKVÄGSLÄGE

det bästa läget för att skapa XML med mer kontroll över formatet är SÖKVÄGSLÄGET. Med hjälp av sökvägen kan användaren komponera enklare SELECT och leverera XPath-artikuleringar för kolumnen för att tilldela en kommandokedja. Använd för XML-sökväg med underfrågor för att få rätt XML-datatypsdokument med element-attributkedjan:

1
2
3
4
5
6
7
8
9
10
11

välj user_id, fname, lname, email_
från user_details
där email_ = ’[email protected]
för XML-sökväg;
<rad>
<user_id> 3< / user_id>
<fname> Mihail < / fname>
<lnamn >Frintu < / lnamn>
<e-post_>[email protected] < / email_>
</rad>

slutsats

att använda ett serverfrågeresultat för att uppnå ett annat XML-format är enkelt. Frågeresultatet extraheras i XML genom att inkludera en för XML-fångstfras i slutet av SELECT-satsen. Som diskuterats har vi ett antal alternativ för att strukturera eller ordna resultatet med kolumner till attribut eller XML-noder med XML-datatypen.

  • författare
  • Senaste inlägg
Jignesh Raiyani
Jignesh har god erfarenhet av databaslösningar och arkitektur, arbetar med flera kunder på databasdesign & arkitektur, SQL-utveckling, Administration, Frågeoptimering, prestandajustering, HA och katastrofåterställning.
Visa alla inlägg av Jignesh Raiyani

Jignesh Raiyani
Senaste inlägg av Jignesh Raiyani (se alla)
  • Page livslängd (PLE) i SQL Server-17 juli 2020
  • hur man automatiserar Tabellpartitionering i SQL Server-7 juli 2020
  • konfigurera SQL Server alltid på Tillgänglighetsgrupper på AWS EC2-juli 6, 2020

Leave a Reply

Din e-postadress kommer inte publiceras.