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:
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:
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;
|
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>
|
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
Visa alla inlägg av Jignesh Raiyani
- 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