SQLShack
I denne artikkelen viser vi hvordan du oppretter ET XML-datatypedokument fra en relasjonstabell ved hjelp av forskjellige t-SQL-måter. For dataoverføring kan for eksempel informasjon fra SQL Server-databasen eksporteres og importeres VED HJELP AV XML i et annet rammeverk. XML ER en standard måte å trekke ut, lagre og manipulere data. Et aspekt ved å arbeide MED XML-datatypen er å opprette XML fra relasjonsinformasjon, som er gjort ved hjelp AV for XML-bestemmelsen I SQL Server:
EN XML-datatype kan brukes på en alternativ måte I SQL Server. Denne artikkelen vil forklare noen grunnleggende bruk AV XML. FOR XML-nøkkelord er en bestemmelse som kan legges til MED SELECT query-setningen for å klargjøre XML-dokumentet i de nødvendige skjemaene i et spørringsresultat. Resultatet er En Unicode-streng som inneholder komponenter og kvaliteter som styres av de forskjellige modusene som er bestemt i bestemmelsen MED FOR XML.
de fire modusene er:
- RAW
- AUTO
- EKSPLISITT
- STI
tabellen nedenfor viser eksempeldata for ytterligere avklaring av de ulike metodene:
AUTOMATISK modus
AUTOMATISK modus er en av tilnærmingene til å konvertere OVER TIL XML-elementene fra radene i tabellen. Elementnavn PÅ XML-dokumentet som svarer til kolonnealiaset eller kolonnenavnet PÅ UTVALGSSPØRRINGEN.
spørringsresultatet er for eksempel produsert med et ENKELT XML-dokument for eksempeldataene ovenfor. Spørringsresultatet hadde 5 rader i et resultatsett, som er endret til en enslig celle resultatsett. Denne metoden brukes i en enkeltverdig funksjon for å returnere flere rader i en enkelt returvariabel.
1
2
3
|
VELG user_id, fname, lname, email_
fra user_details
FOR XML AUTO;
|
HER produserer AUTO header navn utnytte tabellnavn.
EKSPLISITT modus
FOR mer kontroll over utformingen av DEN påfølgende XML, KAN SQL-utviklere bruke EKSPLISITT modus. MED EKSPLISITT modus endres et spørringsresultat til et ENKELT XML-datatypedokument med tilpassede XML-etiketter og verdier. EKSPLISITT modus vil gjøre et annet etikettsett for hver rad i en post. Selv, GJØR EKSPLISITT modus utforme XML-format som brukeren ønsker å sette plasseringen av elementene I XML datatype format I SQL-Spørring.
Nedenfor er et eksempel på BRUK AV EKSPLISITT modus:
SQL-spørring:
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
|
VELG 1 som tag,
NULL som forelder,
user_id as,
NULL AS,
NULL AS,
NULL AS
NULL AS
fra user_details
UNION ALLE
VELG 3 som tag,
1 som forelder,
user_id as ,
fname AS ,
lname AS ,
email_ AS
fra user_detaljer
UNION ALLE
velg 2 som tag,
1 som forelder,
user_id as ,
fname as ,
lname as ,
lname as,
lname as,
email_ as
fra user_details
bestill med 3, 1
for xml eksplisitt;
|
EKSPLISITT modus resultat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<bruker>
<fname fname= «Jo» />
<lname lname= «Brun» />
</bruker>
<bruker>
<fname fname= «Katie» />
< lname lname= «McAskill-Hvit» />
</bruker>
<bruker>
<fname fname= «Mihail» />
<lname lname= «Frintu» />
</bruker>
<bruker>
<fname fname= «Jimmy» />
<lname lname= «Bischoff» />
</bruker>
<bruker>
<fname fname= «Alan» />
<lname lname= «Brygger» />
</bruker>
|
RAW-modus
DEN vanligste og ofte brukte modusen av utviklere for Å lage XML innen FOR XML er RAW-modusen. I UTGANGSPUNKTET gir RAW-modus et element som heter » row » fra resultatsettet for hver rad I SELECT-artikulasjonen, og celleverdien til raden vil bli begrenset som et attributt til elementet. I EN RAW-modus, vil hver kolonne bli behandlet som ett element I XML, og kolonner av disse linjene vil bli tilskrevet det samme elementet. RAW-modus brukes til å endre hver rad i resultatsettet til EN XML-komponent.
FOR RADMODUS, ulike spørr modeller med ulike utganger forklart i eksemplene nedenfor:
Eksempel 1
1
2
3
4
5
6
7
8
9
|
VELG user_id, fname, lname, email_
fra user_details
FOR XML RAW
< rad user_id= «1»fname=» Jo » Lname=»Brun» email_ = » jo0 @ adventure-fungerer.com» />
<row user_id=»2″ fname= «Katie» lname = «McAskill-Hvit» 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]» />
|
VED HJELP AV RAW-modus defineres overskriften for hvert element som et radelement I XML-resultatet, og kolonnene i hver rad tilskrives i radelementet i XML-datatyperesultatet.
Eksempel 2
1
2
3
4
5
6
7
8
9
10
11
|
VELG user_id, fname, lname, email_
fra user_details
FOR XML RAW(‘bruker’), ROOT
< root>
<bruker user_id= » 1 «fname=» Jo «lname=» Brown «email_=» [email protected]» />
<user user_id= » 2 «fname=» Katie «lname=» McAskill-Hvit » email_=»[email protected]» />
<bruker user_id= » 3 «fname=» Mihail «lname=» Frintu » email_=»[email protected]» />
<bruker user_id= » 4 «fname=» Jimmy «lname=» Bischoff » email_=»[email protected]» />
<bruker user_id= » 5 «fname=» Alan «lname=» Brewer «email_=» [email protected]» />
</root>
|
HVIS brukeren vil inkludere alle elementene i en enkelt kode, KAN ROTALTERNATIVET med RAW-modusen brukes, og hvert elements toppnavn kan defineres av brukeren ved å legge til et navn MED RAW () i XML-datatyperesultatet.
Eksempel 3
1
2
3
4
5
6
7
8
9
10
11
|
VELG user_id, fname, lname, email_
fra user_details
FOR XML RAW(‘bruker’), ROOT (‘UserDetails’)
<UserDetails>
<bruker user_id= » 1 «fname=» Jo «lname=» Brown «email_=» [email protected]» />
<user user_id= » 2 «fname=» Katie «lname=» McAskill-Hvit » email_=»[email protected]» />
<bruker user_id= » 3 «fname=» Mihail «lname=» Frintu » email_=»[email protected]» />
<bruker user_id= » 4 «fname=» Jimmy «lname=» Bischoff » email_=»[email protected]» />
<bruker user_id= » 5 «fname=» Alan «lname=» Brewer «email_=» [email protected]» />
</UserDetails>
|
I XML RAW-ROTEN kan overskriften utformes med et brukerdefinert navn med ROTEN (). Som det kan ses i eksemplet, erstattes <rot> – elementet med <UserDetails >
Eksempel 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
VELG user_id, fname, lname, email_
fra user_details
FOR XML RAW, ELEMENTER
< rad >
<bruker_id > 1 < / bruker_id>
<fname > Jo< / fname>
<lname > Brun < /lname>
<e-post_>[email protected]< / e-post_>
</row>
<row>
<bruker_id> 2 < / bruker_id>
<fname >Katie < / fname>
<lname > McAskill-Hvit< /lname>
<email_> [email protected]< / e-post_>
</row>
|
Ved HJELP AV ELEMENT direktivet MED RAW-modus, kan brukeren gjøre rad-element struktur-basert XML. Hver celle i raden trekkes ut MED XML-elementer inne i det overordnede elementet i raden som <rad >. I utgangspunktet brukte VI ELEMENTS-søkeordet i spørringen ovenfor for å vise kolonnene som elementer I output XML.
BANEMODUS
DEN beste modusen for Å lage XML med mer kontroll over formatet er BANEMODUS. Ved HJELP AV BANEN kan brukeren komponere enklere VALG OG forsyning AV xpath-artikulasjoner for kolonnen for å tildele en kommandokjede. Bruk FOR XML-BANE med delspørringer for å få riktig XML-datatypedokument med element-attributtkjeden:
1
2
3
4
5
6
7
8
9
10
11
|
VELG user_id, fname, lname, email_
fra user_details
hvor email_ = ‘[email protected]’
FOR XML-BANE;
< rad>
<bruker_id> 3 < / bruker_id>
<fname > Mihail < / fname>
<lname > Frintu < /lname>
<e-post_>[email protected]< / e-post_>
</row>
|
Konklusjon
Det er enkelt å Bruke et serverspørringsresultat for å oppnå ET ANNET XML-format. Spørringsresultatet trekkes ut I XML ved å inkludere EN for XML catchphrase på slutten AV SELECT-setningen. Som diskutert har vi en rekke alternativer for å strukturere eller ordne utfallet med kolonner til attributter eller XML-noder med XML-datatypen.
- Forfatter
- Siste Innlegg
Vis alle innlegg av Jignesh Raiyani
- Forventet Levetid (PLE) I SQL Server – 17. juli 2020
- slik automatiserer Du Tabellpartisjonering I SQL Server – 7. juli 2020
- Konfigurere SQL Server Alltid På Tilgjengelighetsgrupper PÅ AWS EC2 – juli 6, 2020