Sqlshack

tässä artikkelissa, näytämme miten luoda XML tietotyyppi asiakirjan relaatiotaulukosta hyödyntäen eri T-SQL tapoja. Esimerkiksi tiedonsiirrossa SQL Server-tietokannan tietoja voidaan viedä ja tuoda XML: n avulla toisessa kehyksessä. XML on standardi tapa purkaa, tallentaa ja manipuloida tietoa. Yksi osa työskentely XML tietotyyppi on luoda XML relational information, joka tehdään käyttämällä for XML provision SQL Server:

 taulukko XML-asiakirjaan

taulukko XML-asiakirjaan

XML-tietotyyppiä voidaan käyttää vaihtoehtoisella tavalla SQL Server-järjestelmässä. Tämä artikkeli selittää joitakin perustavanlaatuisia käyttötarkoituksia XML. XML-avainsanalla tarkoitetaan säännöstä, joka voidaan lisätä SELECT-kyselyn lausekkeen kanssa XML-dokumentin valmistamiseksi vaadituissa muodoissa kyselytulokseen. Lopputuloksena on Unicode-merkkijono, joka sisältää komponentteja ja ominaisuuksia, joita ohjataan säännössä määritetyillä eri moodeilla XML: lle.

neljä tilaa ovat:

  • RAW
  • AUTO
  • eksplisiittinen
  • polku

alla olevassa taulukossa on näytetiedot eri menetelmien tarkentamiseksi:

otostaulukko

esimerkkitaulukko

automaattitila

automaattitila on yksi tapa muuntaa XML-elementeiksi taulukon riveistä. XML-asiakirjan elementtien nimet, jotka vastaavat valitun kyselyn sarakenimeä tai sarakenimeä.

esimerkiksi kyselyn tulos on tuotettu yhdellä XML-dokumentilla yllä olevalle otosaineistolle. Kyselyn tuloksessa oli 5 riviä tulosjoukossa, joka vaihtuu yksinäisen solun tulosjoukoksi. Tätä menetelmää käytetään yhden arvon funktiossa, joka palauttaa useita rivejä yhteen paluumuuttujaan.

1
2
3

valitse user_id, fname, lname, email_
USER_DETAILS
FOR XML AUTO;

XML-tietotyypin taulukko

taulukko XML-tietotyyppiin

tässä AUTO tuottaa otsikoiden nimet käyttäen taulukoiden nimiä.

EKSPLISIITTITILA

SQL-kehittäjät voivat käyttää eksplisiittistä tilaa ohjatakseen myöhempien XML-versioiden tyylittelyä. EKSPLISIITTISESSÄ tilassa kyselyn tulos vaihdetaan yhteen XML-tietotyyppiseen asiakirjaan, jossa on räätälöityjä XML-tarroja ja-arvoja. Eksplisiittinen tila tekee eri etikettisarjan jokaiselle tietueriville. Jopa, eksplisiittinen tila mahdollistaa XML-muodon suunnittelun, koska käyttäjä haluaa asettaa elementtien sijainnin XML-tietotyyppiformaatissa SQL-kyselyssä.

alla on esimerkki eksplisiittisen tilan käytöstä:

SQL-kysely:

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

valitse 1 merkiksi,
NULL vanhempana,
user_id as,
NULL AS,
NULL AS,
NULL as,
NULL as,
NULL as
NULL as,
NULL as
user_details
UNION ALL
SELECT 3 as tag,
1 as parent,
user_id as ,
fname AS ,
lname AS ,
email_ AS
user_details
Union all
select 2 as tag,
1 as parent,
user_id as ,
fname as ,
lname as ,
lname as,
LNAME as,
LNAME as,
email_ as
user_details
Order by 3, 1
for XML explicit;

eksplisiittisen tilan tulos:

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

<käyttäjä>
<fname fname= ”Jo” />
<lname lname= ”ruskea” />
</käyttäjä>
<käyttäjä>
<fname fname= ”Katie” />
<lname lname= ”McAskill-valkoinen” />
</käyttäjä>
<käyttäjä>
<fname fname= ”Mihail” />
<lname lname= ”Frintu” />
</käyttäjä>
<käyttäjä>
<fname fname= ”Jimmy” />
<lname lname= ”Bischoff” />
</käyttäjä>
<käyttäjä>
<fname fname= ”Alan” />
<lname lname= ”Brewer” />
</käyttäjä>

eksplisiittinen tila

eksplisiittinen tila

RAAKATILA

kehittäjien yleisin ja usein käyttämä tila XML: n tekemiseen XML: n sisällä on RAAKATILA. Periaatteessa RAAKATILA tuottaa elementin nimeltä ”rivi” kunkin rivin TULOSJOUKOSTA SELECT-artikulaatiossa, ja rivin soluarvo rajataan elementin attribuuttina. RAAKATILASSA jokaista saraketta käsitellään XML: ssä yhtenä elementtinä, ja näiden rivien sarakkeet liitetään samaan elementtiin. RAW-tilassa muutetaan tulosjoukon jokainen rivi XML-komponentiksi.

RIVITILASSA erilaisia kyselymalleja, joilla on erilaiset lähdöt selitettynä alla olevissa esimerkeissä:

Esimerkki 1

1
2
3
4
5
6
7
8
9

valitse user_id, fname, lname, email_
FROM user_details
FOR 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]” />
<rivi_id= ” 3 ”fname=” Mihail ”lname=” Frintu ” email_=”[email protected]” />
<rivi_id= ”4”fname=” Jimmy ”lname=” Bischoff ” email_=”[email protected]” />
<row user_id= ”5”fname=” Alan”lname=” Brewer”email_=” [email protected]” />

RAW-tilassa kunkin elementin otsikko määritellään rivielementiksi XML-tuloksessa ja kunkin rivin sarakkeet kohdistetaan rivielementin sisään XML-tietotyypin tuloksessa.

Esimerkki 2

1
2
3
4
5
6
7
8
9
10
11

valitse user_id, fname, lname, email_
FROM user_details
for XML RAW (’user’), ROOT
< root>
<user_id= ”1”fname=” Jo”lname=” Brown”email_=” [email protected]” />
<user_id= ”2”fname=” Katie ”lname=” McAskill-White ” email_=”[email protected]” />
<user_id= ” 3 ”fname=” Mihail ”lname=” Frintu ” email_=”[email protected]” />
<user_id= ”4”fname=” Jimmy ”lname=” Bischoff ” email_=”[email protected]” />
<user_id= ”5”fname=” Alan”lname=” Brewer”email_=” [email protected]” />
</juuri>

jos käyttäjä haluaa sisällyttää kaikki elementit yhteen tagiin, voidaan käyttää juuri-vaihtoehtoa RAAKATILAN kanssa ja käyttäjä voi määritellä kunkin elementin otsakkeen nimen lisäämällä RAW () – nimen XML-tietotyypin tulokseen.

esimerkki 3

1
2
3
4
5
6
7
8
9
10
11

valitse user_id, fname, lname, email_
FROM user_details
FOR XML RAW (’user’), ROOT (’UserDetails’)
<UserDetails>
<user_id= ”1”fname=” Jo”lname=” Brown”email_=” [email protected]” />
<user_id= ”2”fname=” Katie ”lname=” McAskill-White ” email_=”[email protected]” />
<user_id= ” 3 ”fname=” Mihail ”lname=” Frintu ” email_=”[email protected]” />
<user_id= ”4”fname=” Jimmy ”lname=” Bischoff ” email_=”[email protected]” />
<user_id= ”5”fname=” Alan”lname=” Brewer”email_=” [email protected]” />
</UserDetails>

XML-RAW-juuressa otsakkeelle voidaan suunnitella käyttäjän määrittelemä nimi juurella (). Kuten esimerkistä käy ilmi,<juuri > alkuaine korvataan < UserDetails>

esimerkillä 4

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

valitse user_id, fname, lname, email_
user_details
FOR XML RAW, ELEMENTS
< row>
<käyttäjä_id>1< / käyttäjä_id>
<fname> Jo< / fname>
<lname> Brown</lname>
<sähköposti_>[email protected]< / email_>
</rivi>
<rivi>
<user_id>2< / user_id>
<fname>Katie< / fname>
<lname>McAskill-White< / lname>
<email_>[email protected]< / email_>
</rivi>

käyttämällä ELEMENTTIDIREKTIIVIÄ RAAKATILAN kanssa käyttäjä voi tehdä rivielementtirakenteista XML: ää. Jokainen rivin solu uutetaan XML-elementeillä rivin kantaelementin sisällä muodossa < rivi>. Pohjimmiltaan, käytimme elementit avainsanan edellä kyselyn näyttää sarakkeet elementteinä lähtö XML.

POLKUTILA

paras tila XML: n luomiseen, jossa formaattia voidaan hallita enemmän, on POLKUTILA. Käyttämällä polku, käyttäjä voi säveltää suoraviivaisempi valitse ja toimittaa XPath artikulaatioita sarakkeen määrittää komentoketjun. Käytä XML-polkua alijonojen kanssa saadaksesi oikean XML-tietotyypin asiakirjan element-attribuuttiketjulla:

1
2
3
4
5
6
7
8
9
10
11

valitse user_id, fname, lname, email_
FROM user_details
WHERE email_ = ”[email protected]
XML-polulle;
< rivi>
<user_id>3< / user_id>
<fname>Mihail< / fname>
<lname>Frintu< / lname>
<sähköposti_>[email protected]< / email_>
</rivi>

johtopäätös

Palvelinkyselyn tuloksen käyttäminen toisen XML-muodon saavuttamiseksi on suoraviivaista. Kyselyn tulos uutetaan XML-muodossa sisällyttämällä XML-iskulause valitun lausekkeen loppuun. Kuten keskusteltu, meillä on useita vaihtoehtoja rakenne tai järjestää tuloksen sarakkeet attribuutteja tai XML solmut XML tietotyyppi.

  • tekijä
  • tuoreita viestejä
Jignesh Raiyani
Jigneshilla on hyviä kokemuksia Tietokantaratkaisuista ja-arkkitehtuurista, työskennellen useiden asiakkaiden kanssa Tietokantasuunnittelussa & Arkkitehtuuri, SQL-kehitys, hallinto, kyselyn optimointi, suorituskyvyn viritys, HA ja katastrofien palautus.
Näytä kaikki viestit käyttäjältä Jignesh Raiyani

Jignesh Raiyani
viimeisimmät viestit käyttäjältä Jignesh Raiyani (Näytä kaikki)
  • Page Life Expectate (PLE) in SQL Server – July 17, 2020
  • miten automatisoida taulukon osiointi SQL Server – July 7, 2020
  • konfigurointi SQL Server aina Käytettävyysryhmät AWS EC2-heinäkuu 6, 2020

Leave a Reply

Sähköpostiosoitettasi ei julkaista.