web-dev-qa-db-fra.com

Comment convertir des enregistrements dans une table au format XML à l'aide de T-SQL?

J'ai un tableau simple et je veux stocker son contenu dans un fichier XML sur le disque dur. Il devrait y avoir un élément racine pour la table entière, un élément par ligne de table et un élément enfant par colonne de table.

Quelles sont mes possibilités?

Merci beaucoup Tomas

20
Tomas Walek

Utilisez le FOR XML dans votre requête.

E.g: select * from table1 FOR XML AUTO

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

Alternativement, vous pouvez créer votre propre code XML dans votre code t-sql via des curseurs ou dans le code de votre application, la méthode la plus longue pour le faire.

30
Bhaskar

Et si vous avez besoin de plus de contrôle sur l'apparence du XML résultant, consultez la nouvelle instructionFOR XML PATHdans SQL Server 2005 et versions ultérieures.

Une déclaration comme celle-ci (basée sur la tristement célèbre base de données 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')

donnera un résultat comme celui-ci:

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

C'est plutôt difficile de trouver un autre moyen ...

Marc

46
marc_s