ホームページ > データベース > mysql チュートリアル > Transact-SQL を使用して XML データを SQL Server テーブルに効率的に変換するにはどうすればよいですか?

Transact-SQL を使用して XML データを SQL Server テーブルに効率的に変換するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-03 01:13:45
オリジナル
121 人が閲覧しました

How can I efficiently transform XML data into a SQL Server table using Transact-SQL?

XML データを SQL Server テーブルに変換する

XML を含むデータ管理シナリオの場合、分析と処理のために構造化テーブル形式に変換します。必要なこともあります。このタスクは、SQL Server の Transact-SQL (TSQL) を使用して効果的に実行できます。

XML からテーブルへの変換

XML データをテーブルに変換するプロセスには、次の 3 つのプロセスが含まれます。アプローチ:

  1. FOR XML PATH: このアプローチでは FOR を使用します。 XML PATH 句を使用して、XML ドキュメント内の要素を抽出し、行セットを作成します。データは階層構造として 1 つの列に保存されます。
  2. OPENXML: OPENXML では、OPENXML 関数を使用して XML ドキュメントを反復処理できます。このメソッドを使用すると、生成されるテーブルの構造をより詳細に制御できます。
  3. XQuery: XQuery() 関数で XQuery 式を使用すると、SQL Server 内で XML データを直接クエリおよび変換できます。

次の XML について考えてみましょう。データ:

<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>
ログイン後にコピー

FOR XML PATH メソッドを適用すると、次のコードはこの XML をテーブルに変換します:

DECLARE @xml XML = 
'<root>
    <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>
</root>';

SELECT
    IdInvernadero,
    IdProducto,
    IdCaracteristica1,
    IdCaracteristica2,
    Cantidad,
    Folio
FROM
    @xml.nodes('//row') AS tbl(row)
CROSS APPLY
    tbl.row.query('./@*') AS col(name, value);
ログイン後にコピー

結果のテーブル:

IdInvernadero  IdProducto  IdCaracteristica1  IdCaracteristica2  Cantidad  Folio
----------  ----------  ---------------  ---------------  -------  ------
8               3              8                    8                    25       4568457
3               3              1                    2                    72       4568457
ログイン後にコピー

TSQL を活用することで、XML データを効率的に構造化テーブルに変換し、データ分析、操作、レポート作成タスクを実行できるようになります。

以上がTransact-SQL を使用して XML データを SQL Server テーブルに効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート