如何使用T-SQL将表中的记录转换为xml格式?

时间:2009-10-14 06:19:01

标签: sql-server xml tsql

我有一个简单的表,想要将其内容存储到硬盘上的xml中。整个表应该有一个根元素,每个表行一个元素,每个表列一个子元素。

我有什么可能性?

非常感谢 托马斯

3 个答案:

答案 0 :(得分:46)

如果您需要更多地控制生成的XML的外观,请查看SQL Server 2005及更新版本中的新 FOR XML PATH 语句。

这样的陈述(基于臭名昭着的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>

任何其他方式都是相当棘手的....

马克

答案 1 :(得分:32)

在查询中使用 FOR XML

例如:select * from table1 FOR XML AUTO

看到这个 - &gt; http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1265579,00.html

或者,您可以通过游标或应用程序代码在t-sql代码中创建自己的XML,这样做的时间越长。

答案 2 :(得分:0)

SELECT CAST('1' AS XML)

此sql中的查询以及放入的复制数据然后显示XML结果。