Подтвердить что ты не робот

Как преобразовать записи в таблицу в формат XML с помощью T-SQL?

У меня есть простая таблица и вы хотите сохранить ее содержимое в xml на жестком диске. Должен быть один корневой элемент для всей таблицы, один элемент для каждой строки таблицы и один дочерний элемент для столбца таблицы.

Какие возможности у меня есть?

Большое спасибо Томас

4b9b3361

Ответ 1

Используйте FOR XML в вашем запросе.

Например: select * from table1 FOR XML AUTO

см. это → http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1265579,00.html

В качестве альтернативы вы можете создать свой собственный XML в своем t-sql-коде через курсоры или код приложения, тем более длинный способ сделать это.

Ответ 2

И если вам нужно больше контролировать, как выглядит полученный 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>

Это довольно сложно получить другим способом.

Марк