SQLShack

In diesem Artikel zeigen wir Ihnen, wie Sie ein XML-Datentypdokument aus einer relationalen Tabelle mit verschiedenen T-SQL-Methoden erstellen. Für die Datenmigration können beispielsweise Informationen aus der SQL Server-Datenbank mithilfe von XML in ein anderes Framework exportiert und importiert werden. XML ist eine Standardmethode zum Extrahieren, Speichern und Bearbeiten von Daten. Ein Aspekt beim Arbeiten mit dem XML-Datentyp ist das Erstellen von XML aus relationalen Informationen, das mithilfe der FOR XML-Bereitstellung in SQL Server erfolgt:

Tabelle in XML-Dokument

 Tabelle in XML-Dokument

Ein XML-Datentyp kann in SQL Server auf alternative Weise verwendet werden. In diesem Artikel werden einige grundlegende Verwendungen von XML erläutert. Das Schlüsselwort FOR XML ist eine Bestimmung, die mit der SELECT query-Anweisung hinzugefügt werden kann, um das XML-Dokument in den erforderlichen Formularen in einem Abfrageergebnis vorzubereiten. Das Ergebnis ist eine Unicode-Zeichenfolge, die Komponenten und Qualitäten enthält, die von den verschiedenen Modi gesteuert werden, die in der Bereitstellung mit FOR XML festgelegt wurden.

Die vier modi sind:

  • ROH
  • AUTO
  • EXPLIZIT
  • PFAD

Die folgende Tabelle zeigt Beispieldaten zur weiteren Erläuterung der verschiedenen Methoden:

 beispieltabelle

 Beispieltabelle

AUTO-Modus

Der AUTO-Modus ist einer der Ansätze, um die XML-Elemente aus den Zeilen der Tabelle zu konvertieren. Elementnamen des XML-Dokuments, die dem Spaltenalias oder Spaltennamen der SELECT-Abfrage entsprechen.

Das Abfrageergebnis wurde beispielsweise mit einem einzigen XML-Dokument für die obigen Beispieldaten erstellt. Das Abfrageergebnis enthielt 5 Zeilen in einer Ergebnismenge, die in eine Ergebnismenge für einzelne Zellen geändert wird. Diese Methode wird in einer einwertigen Funktion verwendet, um mehrere Zeilen in einer einzelnen Rückgabevariablen zurückzugeben.

1
2
3

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
FÜR XML AUTO;

 Tabelle in XML-Datentyp

 Tabelle in XML-Datentyp

Hier werden automatisch Headernamen unter Verwendung von Tabellennamen erstellt.

EXPLIZITER Modus

Für mehr Kontrolle über das Styling des nachfolgenden XML können SQL-Entwickler den EXPLIZITEN Modus verwenden. Im EXPLIZITEN Modus wird ein Abfrageergebnis in ein einzelnes XML-Datentypdokument mit benutzerdefinierten XML-Beschriftungen und -Werten geändert. Im EXPLIZITEN Modus wird für jede Zeile in einem Datensatz ein anderes Label festgelegt. Der EXPLIZITE Modus ermöglicht sogar das Entwerfen des XML-Formats, da der Benutzer die Position der Elemente im XML-Datentypformat in der SQL-Abfrage festlegen möchte.

Unten finden Sie ein Beispiel für die Verwendung des EXPLIZITEN Modus:

SQL-Abfrage:

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

WÄHLEN SIE 1 als Tag,
NULL als übergeordnetes Element,
user_id als ,
NULL ALS ,
NULL ALS ,
NULL ALS
VON user_details
UNION ALL
WÄHLEN SIE 3 als Tag,
1 als übergeordnetes Element,
user_id as ,
fname AS ,
lname AS ,
email_ AS
VON user_details
UNION ALL
WÄHLEN SIE 2 als Tag,
1 als übergeordnetes Element,
user_id as ,
fname AS ,
lname AS ,
email_ ALS
VON user_details
ORDER BY 3, 1
FÜR XML EXPLIZIT;

EXPLIZITER Modus Ergebnis:

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

< benutzer>
< fname fname=“Jo“ />
< lname lname=“Braun“ />
</ benutzer>
< benutzer>
< fname fname=“Katie“ />
<lname lname=“McAskill-Weiß“ />
</ benutzer>
< benutzer>
< fname fname=“Mihail“ />
< lname lname=“Frintu“ />
</ benutzer>
< benutzer>
< fname fname=“Jimmy“ />
< lname lname=“Bischoff“ />
</ benutzer>
< benutzer>
< fname fname=“Alan“ />
< lname lname=“Brauer“ />
</ benutzer>

EXPLIZITER Modus

 EXPLIZITER Modus

RAW-Modus

Der von Entwicklern am häufigsten verwendete Modus zum Erstellen von XML in FOR XML ist der RAW-Modus. Grundsätzlich gibt der RAW-Modus für jede Zeile in der SELECT-Artikulation ein Element mit dem Namen „row“ aus der Ergebnismenge aus, und der Zellenwert der Zeile wird als Attribut des Elements begrenzt. In einem RAW-Modus wird jede Spalte als ein Element in der XML behandelt, und Spalten dieser Zeilen werden demselben Element zugeordnet. Der RAW-Modus wird verwendet, um jede Zeile in der Ergebnismenge in eine XML-Komponente zu ändern.

Für den Zeilenmodus werden verschiedene Abfragemodelle mit unterschiedlichen Ausgaben in den folgenden Beispielen erläutert:

Beispiel 1

1
2
3
4
5
6
7
8
9

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
FÜR XML RAW
< Zeile user_id=“1″ fname=“Jo“ lname=“Brown“ email_=“[email protected]“ />
< zeile user_id = „2“ fname =“Katie“ lname =“McAskill-White“ email_ =“[email protected]“ />
< zeile user_id = „3“ fname =“Mihail“ lname =“Frintu“ email_ =“[email protected]“ />
< zeile user_id=“4″ fname=“Jimmy“ lname=“Bischoff“ email_=“[email protected]“ />
< zeile user_id = „5“ fname =“Alan“ lname =“Brauer“ email_ = „alan0 @adventure-funktioniert.kom“ />

Im RAW-Modus wird der Header jedes Elements als Zeilenelement im XML-Ergebnis definiert, und die Spalten jeder Zeile werden innerhalb des Zeilenelements im XML-Datentyp-Ergebnis zugeordnet.

Beispiel 2

1
2
3
4
5
6
7
8
9
10
11

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
FÜR XML RAW(‚user‘), ROOT
<root>
< benutzer user_id = „1“ fname =“Jo“ lname =“Brown“ email_ =“[email protected]“ />
< benutzer user_id = „2“ fname =“Katie“ lname =“McAskill-White“ email_ =“[email protected]“ />
< benutzer user_id = „3“ fname =“Mihail“ lname =“Frintu“ email_ =“[email protected]“ />
< benutzer user_id=“4″ fname=“Jimmy“ lname=“Bischoff“ email_=“[email protected]“ />
< benutzer user_id = „5“ fname =“Alan“ lname =“Brauer“ email_ =“[email protected]“ />
</ wurzel>

Wenn der Benutzer alle Elemente in ein einzelnes Tag aufnehmen möchte, kann die ROOT-Option mit dem RAW-Modus verwendet werden, und der Header-Name jedes Elements kann vom Benutzer definiert werden, indem im XML-Datentyp-Ergebnis ein Name mit dem RAW () hinzugefügt wird.

Beispiel 3

1
2
3
4
5
6
7
8
9
10
11

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
FÜR XML RAW (‚user‘), ROOT(‚UserDetails‘)
< Benutzerdetails>
< benutzer user_id = „1“ fname =“Jo“ lname =“Brown“ email_ =“[email protected]“ />
< benutzer user_id = „2“ fname =“Katie“ lname =“McAskill-White“ email_ =“[email protected]“ />
< benutzer user_id = „3“ fname =“Mihail“ lname =“Frintu“ email_ =“[email protected]“ />
< benutzer user_id=“4″ fname=“Jimmy“ lname=“Bischoff“ email_=“[email protected]“ />
< benutzer user_id = „5“ fname =“Alan“ lname =“Brauer“ email_ =“[email protected]“ />
</ Benutzerdetails>

Im XML-ROHSTAMM kann der Header mit einem benutzerdefinierten Namen mit dem ROOT() gestaltet werden. Wie im Beispiel zu sehen ist, wird das Element <root> durch das Beispiel <UserDetails>

ersetzt 4

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

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
FÜR XML RAW, ELEMENTS
<row>
<Benutzer-ID>1</Benutzer-ID>
< fname>Jo</fname>
< lname>Braun</lname>
< e-mail_>[email protected] </E-mail_>
</ reihe>
< reihe>
< benutzer-ID>2</Benutzer-ID>
< fname>Katie</fname>
< lname>McAskill-Weiß</lname>
< email_>[email protected]< / E-mail_>
</ reihe>

Mit der ELEMENT-Direktive mit dem RAW-Modus kann der Benutzer zeilenelementstrukturbasiertes XML erstellen. Jede Zelle der Zeile wird mit XML-Elementen innerhalb des übergeordneten Elements der Zeile als <row> extrahiert. Grundsätzlich haben wir das Schlüsselwort ELEMENTS in der obigen Abfrage verwendet, um die Spalten als Elemente in der Ausgabe-XML anzuzeigen.

PFADMODUS

Der beste Modus zum Erstellen von XML mit mehr Kontrolle über das Format ist der Pfadmodus. Mit dem PFAD kann der Benutzer einfachere SELECT- und Supply-XPATH-Artikulationen für die Spalte erstellen, um eine Befehlskette zuzuweisen. Verwenden Sie FOR XML PATH mit Unterabfragen, um das richtige XML-Datentypdokument mit der Elementattributkette abzurufen:

1
2
3
4
5
6
7
8
9
10
11

WÄHLEN SIE user_id, fname, lname, email_
AUS user_details
WHERE email_ = ‚[email protected]
FÜR XML-PFAD;
<Reihe>
< benutzer-ID>3</Benutzer-ID>
< fname>Mihail</fname>
< lname>Frintu</lname>
< e-mail_>[email protected] </E-mail_>
</ reihe>

Fazit

Die Verwendung eines Serveranfrageergebnisses zum Erreichen eines anderen XML-Formats ist unkompliziert. Das Abfrageergebnis wird in XML extrahiert, indem am Ende der SELECT-Anweisung ein FOR XML-Schlagwort eingefügt wird. Wie bereits erwähnt, gibt es eine Reihe von Alternativen, um das Ergebnis mit Spalten zu Attributen oder XML-Knoten mit dem XML-Datentyp zu strukturieren oder anzuordnen.

  • Autor
  • Neueste Beiträge
 Jignesh Raiyani
Jignesh verfügt über gute Erfahrung in Datenbanklösungen und -architektur und arbeitet mit mehreren Kunden an Datenbankdesign & Architektur, SQL-Entwicklung, Verwaltung, Abfrageoptimierung, Leistungsoptimierung, HA und Disaster Recovery.
Alle Beiträge von Jignesh Raiyani anzeigen

 Jignesh Raiyani
Neueste Beiträge von Jignesh Raiyani (alle anzeigen)
  • Page Life Expectancy (PLE) in SQL Server – 17. Juli 2020
  • Automatisieren der Tabellenpartitionierung in SQL Server – 7. Juli 2020
  • Konfigurieren von SQL Server Always On Availability Groups in AWS EC2 – Juli 6, 2020

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht.