SQLShack

v tomto článku si ukážeme, jak vytvořit dokument datového typu XML z relační tabulky využívající různé způsoby T-SQL. Například pro migraci dat lze informace z databáze SQL Server exportovat a importovat pomocí XML v jiném rámci. XML je standardní způsob extrahování, ukládání a manipulace s daty. Jedním z aspektů práce s datovým typem XML je vytváření XML z relačních informací, které se provádí pomocí poskytování for XML v SQL Serveru:

 tabulka k XML dokumentu

Tabulka do XML dokumentu

datový typ XML může být použit alternativním způsobem v SQL Serveru. Tento článek vysvětlí některá základní použití XML. Klíčové slovo XML je ustanovení, které lze přidat pomocí příkazu SELECT query pro přípravu dokumentu XML v požadovaných formulářích ve výsledku dotazu. Výsledkem je řetězec Unicode obsahující komponenty a vlastnosti řízené různými režimy určenými v ustanovení s FOR XML.

čtyři režimy jsou:

  • RAW
  • AUTO
  • explicitní
  • cesta

níže uvedená tabulka ukazuje vzorová data pro další objasnění různých metodik:

vzorová tabulka

vzorová tabulka

automatický režim

automatický režim je jedním z přístupů k převodu na prvky XML z řádků tabulky. Názvy prvků dokumentu XML odpovídající aliasu sloupce nebo názvu sloupce dotazu SELECT.

například výsledek dotazu byl vytvořen s jediným dokumentem XML pro výše uvedená vzorová data. Výsledek dotazu měl 5 řádků v sadě výsledků, která se změnila na sadu výsledků osamělé buňky. Tato metodika se používá v jednohodnotové funkci pro návrat více řádků v jedné návratové proměnné.

1
2
3

vyberte user_id, fname, lname, email_
z user_details
pro XML AUTO;

tabulka na datový typ XML

tabulka na datový typ XML

zde AUTO vytváří názvy záhlaví s využitím názvů tabulek.

explicitní režim

pro větší kontrolu nad stylingem následného XML mohou vývojáři SQL použít explicitní režim. V explicitním režimu bude výsledek dotazu změněn na jeden dokument datového typu XML s přizpůsobenými štítky a hodnotami XML. Explicitní režim vytvoří pro každý řádek v záznamu jiný štítek. I explicitní režim umožňuje navrhnout formát XML, protože uživatel chce nastavit polohu prvků ve formátu datového typu XML v dotazu SQL.

níže je uveden příklad použití explicitního režimu:

SQL dotaz:

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

vyberte 1 as tag,
NULL as parent,
user_id as,
NULL AS,
NULL AS,
NULL AS,
NULL AS

z user_details
UNION ALL
SELECT 3 as tag,
1 as parent,
user_id as ,
fname AS ,
lname AS ,
email_ AS
z user_details
UNION ALL
vyberte 2 as tag,
1 as parent,
user_id as ,
fname as ,
lname as ,
email_ as
z user_details
order by 3, 1
pro XML explicitní;

explicitní režim výsledek:

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

<uživatel>
<fname fname= „Jo“ />
<lname lname= „hnědý“ />
</uživatel>
<uživatel>
<fname fname= „Katie“ />
<lname lname= „McAskill-White“ />
</uživatel>
<uživatel>
<fname fname= „Mihail“ />
<lname lname= „Frintu“ />
</uživatel>
<uživatel>
<fname fname= „Jimmy“ />
<lname lname= „Bischoff“ />
</uživatel>
<uživatel>
<fname fname= „Alan“ />
<lname lname= „Sládek“ />
</uživatel>

explicitní režim

explicitní režim

režim RAW

nejběžnějším a Nejčastěji používaným režimem vývojářů pro vytváření XML v rámci XML je režim RAW. Režim RAW v podstatě vypíše prvek s názvem „řádek“ z výsledku nastaveného pro každý řádek v artikulaci SELECT a hodnota buňky řádku bude ohraničena jako atribut prvku. V režimu RAW bude každý sloupec považován za jeden prvek v XML a sloupce těchto řádků budou přiřazeny stejnému prvku. Režim RAW se používá ke změně každého řádku ve výsledku na komponentu XML.

pro řádkový režim jsou různé dotazovací modely s různými výstupy vysvětleny v příkladech níže:

Příklad 1

1
2
3
4
5
6
7
8
9

vyberte user_id, fname, lname, email_
z user_details
pro 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]“ />

v režimu RAW je záhlaví každého prvku definováno jako prvek řádku ve výsledku XML a sloupce každého řádku jsou přiřazeny uvnitř prvku řádku ve výsledku datového typu XML.

příklad 2

1
2
3
4
5
6
7
8
9
10
11

vyberte user_id, fname, lname, email_
z user_details
pro XML RAW (‚user‘), ROOT
<root>
<uživatel user_id= “ 1 „fname=“ Jo “ lname=“ Brown „email_=“ [email protected]“ />
<uživatel user_id= “ 2 „fname=“ Katie „lname=“ McAskill-White “ email_=“[email protected]“ />
<uživatel user_id= “ 3 „fname=“ Mihail „lname=“ Frintu “ email_=“[email protected]“ />
<uživatel user_id= “ 4 „fname=“ Jimmy “ lname=“ Bischoff “ email_=“[email protected]“ />
<uživatel user_id= “ 5 „fname=“ Alan “ lname=“ Brewer „email_=“ [email protected]“ />
</kořen>

pokud chce uživatel zahrnout všechny prvky do jedné značky, lze použít možnost ROOT s režimem RAW a název záhlaví každého prvku může být definován uživatelem přidáním názvu s RAW () do výsledku datového typu XML.

příklad 3

1
2
3
4
5
6
7
8
9
10
11

vyberte user_id, fname, lname, email_
z user_details
pro XML RAW(‚user‘), ROOT (‚UserDetails‘)
<UserDetails>
<uživatel user_id= “ 1 „fname=“ Jo “ lname=“ Brown „email_=“ [email protected]“ />
<uživatel user_id= “ 2 „fname=“ Katie „lname=“ McAskill-White “ email_=“[email protected]“ />
<uživatel user_id= “ 3 „fname=“ Mihail „lname=“ Frintu “ email_=“[email protected]“ />
<uživatel user_id= “ 4 „fname=“ Jimmy “ lname=“ Bischoff “ email_=“[email protected]“ />
<uživatel user_id= “ 5 „fname=“ Alan “ lname=“ Brewer „email_=“ [email protected]“ />
</UserDetails>

v kořenovém adresáři XML RAW může být záhlaví navrženo s uživatelem definovaným názvem s kořenem (). Jak je vidět na příkladu, prvek <root> je nahrazen příkladem <UserDetails>

4

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

vyberte user_id, fname, lname, email_
z user_details
pro XML RAW, ELEMENTS
<row>
<user_id>1< / user_id>
<fname> Jo</fname>
<lnázev>hnědý< / lnázev>
<e-mail_>[email protected]< / email_>
</řádek>
<řádek>
<user_id>2< / user_id>
<fname>Katie< / fname>
<lname>McAskill-White< / lname>
<email_>[email protected]< / email_>
</řádek>

pomocí směrnice ELEMENT s režimem RAW může uživatel vytvořit XML založený na struktuře řádků a prvků. Každá buňka řádku je extrahována s prvky XML uvnitř nadřazeného prvku řádku jako <řádek>. V podstatě jsme použili Klíčové slovo ELEMENTS ve výše uvedeném dotazu k zobrazení sloupců jako prvků ve výstupním XML.

režim cesty

nejlepší režim pro vytváření XML s větší kontrolou nad formátem je režim cesty. Pomocí cesty, uživatel může skládat přímější vybrat a dodat XPath artikulace pro sloupec přiřadit řetězec příkazů. Použijte pro cestu XML s poddotazy k získání správného dokumentu datového typu XML s řetězcem atributů element:

1
2
3
4
5
6
7
8
9
10
11

vyberte user_id, fname, lname, email_
z user_details
kde email_ = ‚[email protected]
pro cestu XML;
< řádek>
<user_id>3< / user_id>
<fname>Mihail</fname>
<lname>Frintu< / lname>
<e-mail_>[email protected]< / email_>
</řádek>

závěr

použití výsledku dotazu serveru k dosažení jiného formátu XML je jednoduché. Výsledek dotazu bude extrahován v XML zahrnutím catchphrase for XML na konec příkazu SELECT. Jak bylo diskutováno, máme řadu alternativ ke strukturování nebo uspořádání výsledku pomocí sloupců s atributy nebo uzly XML s datovým typem XML.

  • Autor
  • poslední příspěvky
Jignesh Raiyani
Jignesh má dobré zkušenosti s databázovými řešeními a architekturou, pracuje s více zákazníky na návrhu databáze & Architektura, vývoj SQL, Správa, optimalizace dotazů, ladění výkonu, Ha a zotavení po havárii.
Zobrazit všechny příspěvky od Jignesh Raiyani

Jignesh Raiyani
nejnovější příspěvky od Jignesh Raiyani (Zobrazit vše)
  • střední délka života stránky (PLE) v SQL Serveru-červenec 17, 2020
  • jak automatizovat dělení tabulek v SQL Serveru-červenec 7, 2020
  • konfigurace SQL Serveru vždy v dostupnosti skupiny na AWS EC2-červenec 6, 2020

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.