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:
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:
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;
|
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ä>
|
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ä
Näytä kaikki viestit käyttäjältä Jignesh Raiyani
- 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