web-dev-qa-db-ja.com

T-SQLを使用してテーブルのレコードをxml形式に変換する方法は?

単純なテーブルがあり、そのコンテンツをハードドライブのxmlに保存したい。テーブル全体に対して1つのルート要素、テーブル行ごとに1つの要素、テーブル列ごとに1つの子要素が必要です。

どのような可能性がありますか?

どうもありがとう

22
Tomas Walek

クエリでFOR XMLを使用します。

例:select * from table1 FOR XML AUTO

これをご覧ください-> http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1265579,00.html

あるいは、カーソルを使用したt-sqlコードまたはアプリケーションコードで、より長い方法で独自のXMLを作成できます。

33
Bhaskar

また、結果のXMLの外観をさらに制御する必要がある場合は、新しいFOR XML PATH SQL Server 2005以降のステートメント。

このようなステートメント(悪名高いNorthwindデータベースに基づく):

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')

次のような出力になります。

  <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>

それは他の方法を得るためにかなり難しいです....

マーク

47
marc_s

SELECT CAST('1' AS XML)

このクエリはSQLで起動し、コピーデータを内部に配置してからXML結果を表示します。

0
Fezal halai