Maison >base de données >tutoriel mysql >Comment puis-je convertir des données XML en table SQL Server à l'aide de XQuery ?

Comment puis-je convertir des données XML en table SQL Server à l'aide de XQuery ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 00:50:40201parcourir

How can I convert XML data to a SQL Server table using XQuery?

Conversion de données XML en table dans SQL Server

Dans SQL Server, vous pouvez convertir des données XML en un format tabulaire à l'aide des données XML types et expressions XQuery. Voici comment :

Approche 1 : Utilisation de l'extracteur de valeur de nœud

Supposons que vous disposiez d'un document XML avec des données formatées comme suit :

<row>
    <IdInvernadero>8</IdInvernadero>
    <IdProducto>3</IdProducto>
    <IdCaracteristica1>8</IdCaracteristica1>
    <IdCaracteristica2>8</IdCaracteristica2>
    <Cantidad>25</Cantidad>
    <Folio>4568457</Folio>
</row>
<row>
    <IdInvernadero>3</IdInvernadero>
    <IdProducto>3</IdProducto>
    <IdCaracteristica1>1</IdCaracteristica1>
    <IdCaracteristica2>2</IdCaracteristica2>
    <Cantidad>72</Cantidad>
    <Folio>4568457</Folio>
</row>

Pour convertir ce XML en tableau, vous pouvez utiliser le XQuery suivant expression :

SELECT  
       Tbl.Col.value('IdInvernadero[1]', 'smallint'),  
       Tbl.Col.value('IdProducto[1]', 'smallint'),  
       Tbl.Col.value('IdCaracteristica1[1]', 'smallint'),
       Tbl.Col.value('IdCaracteristica2[1]', 'smallint'),
       Tbl.Col.value('Cantidad[1]', 'int'),
       Tbl.Col.value('Folio[1]', 'varchar(7)')
FROM   @xml.nodes('//row') Tbl(Col)

Approche 2 : Utilisation de l'extracteur de valeur d'attribut

Alternativement, si vos données XML sont formatées avec des attributs au lieu de nœuds, tels que :

<row IdInvernadero="8" IdProducto="3" IdCaracteristica1="8" IdCaracteristica2="8" Cantidad ="25" Folio="4568457" />
<row IdInvernadero="3" IdProducto="3" IdCaracteristica1="1" IdCaracteristica2="2" Cantidad ="72" Folio="4568457" />

Vous pouvez utiliser l'expression XQuery suivante :

SELECT  
       Tbl.Col.value('@IdInvernadero', 'smallint'),  
       Tbl.Col.value('@IdProducto', 'smallint'),  
       Tbl.Col.value('@IdCaracteristica1', 'smallint'),
       Tbl.Col.value('@IdCaracteristica2', 'smallint'),
       Tbl.Col.value('@Cantidad', 'int'),
       Tbl.Col.value('@Folio', 'varchar(7)')

FROM   @xml.nodes('//row') Tbl(Col)

Cette requête extraira les valeurs des attributs XML et les convertira en un tableau format.

Références :

  • [http://kennyshu.blogspot.com/2007/12/convert-xml-file-to-table- in-sql-2005.html](http://kennyshu.blogspot.com/2007/12/convert-xml -file-to-table-in-sql-2005.html)
  • [http://msdn.microsoft.com/en-us/library/ms3451 17(SQL.90).aspx](http://msdn.microsoft.com/en-us/library/ms345117(SQL.90).aspx)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn