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:

 Tabell TIL XML-dokument

Tabell TIL XML-dokument

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:

eksempel tabell

eksempeltabell

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;

Tabell TIL XML datatype

Tabell TIL XML datatype

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>

EKSPLISITT modus

EKSPLISITT modus

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
Jignesh Raiyani
Jignesh har god erfaring Med Databaseløsninger Og Arkitektur, og jobber med flere kunder På Databasedesign & Arkitektur, SQL-Utvikling, Administrasjon, Spørringsoptimalisering, Ytelsesjustering, HA og Katastrofegjenoppretting.
Vis alle innlegg av Jignesh Raiyani

Jignesh Raiyani
Siste innlegg Av Jignesh Raiyani (se alle)
  • 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

Leave a Reply

Din e-postadresse vil ikke bli publisert.