it-swarm.com.de

Wie konvertiere ich Datensätze in einer Tabelle mit T-SQL in das XML-Format?

Ich habe eine einfache Tabelle und möchte den Inhalt in einer XML-Datei auf der Festplatte speichern. Es sollte ein Stammelement für die gesamte Tabelle geben, ein Element pro Tabellenzeile und ein untergeordnetes Element pro Tabellenspalte.

Welche Möglichkeiten habe ich?

Vielen Dank. Tomas

20
Tomas Walek

Verwenden Sie das FOR XML in Ihrer Abfrage.

ZB: select * from table1 FOR XML AUTO

siehe dies -> http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1265579,00.html

Alternativ können Sie Ihr eigenes XML in Ihrem T-SQL-Code über Cursor oder in Ihrem Anwendungscode erstellen. Dies ist der längere Weg.

30
Bhaskar

Wenn Sie mehr Kontrolle darüber haben möchten, wie das resultierende XML aussieht, überprüfen Sie die neue Anweisung FOR XML PATH in SQL Server 2005 und höher.

Eine Aussage wie diese (basierend auf der berüchtigten Northwind-Datenbank):

SELECT 
   CustomerID as "@CustomerID",
   CompanyName,
   Address as "address/street",
   City as "address/city",
   Region as "address/region",
   PostalCode as "address/Zip",
   Country as "address/country",
   ContactName as "contact/name",
   ContactTitle as "contact/title",
   Phone as "contact/phone", 
   Fax as "contact/fax"
FROM Customers
FOR XML PATH('Customer')

führt zu einer Ausgabe wie dieser:

  <Customer CustomerID="ALFKI">
    <CompanyName>Alfreds Futterkiste</CompanyName>
    <address>
      <street>Obere Str. 57</street>
      <city>Berlin</city>
      <Zip>12209</Zip>
      <country>Germany</country>
    </address>
    <contact>
      <name>Maria Anders</name>
      <title>Sales Representative</title>
      <phone>030-0074321</phone>
      <fax>030-0076545</fax>
    </contact>
  </Customer>

Es ist ziemlich schwierig, einen anderen Weg zu finden ....

Marc

46
marc_s

SELECT CAST('1' AS XML)

Diese Abfrage wird in SQL ausgelöst, und die darin enthaltenen Kopiedaten zeigen das XML-Ergebnis an.

0
Fezal halai