XMLシュレッディングとは、XML文書から値を抽出し、データベース内のテーブルに取り込む処理です。XML文書のツリー構造からデータベースのテーブル形式構造へのマッピングを定義する1つの方法は、注釈付きスキーマを使用することです。代わりに、XSLTスタイルシートに基づくマッピングを使用する方法があります。
メモリを効率的に使用できるように、ストリーム シュレッディングは文書全体をメモリにロードしません。XSLTベースのシュレッディングはメモリに文書をロードし、文書を1回のパスで処理するのと比べて柔軟性が向上します。
XSLTベースのシュレッディングは、シュレッディング ストアド プロシージャを使用して行なわれます。
- XSLT_SHRED - 単一XML文書シュレッディングに使用します
- XSLT_SHRED_BATCH - 複数のXML文書のシュレッドに使用します
XML文書をシュレッドするには、以下の標準タスクを実行します。
- XML文書をロードして、ステージング テーブルのXML列にシュレッドします。XML文書は、W3C XML標準に準拠する必要があります。次に、そのようなXML文書の例を示します。
<<?xml version="1.0"?> <Root> <predictixOfferMessage> <offer> <offerId>1000002</offerId> </offer> <mediaBlock> <mediaBlockId>90000000010002</mediaBlockId> </mediaBlock> </predictixOfferMessage> </Root>
- 以下の2列からなる結果セットを返すSQL問合わせを定義します。
- ID列
- シュレッドするXML文書を含むXML列
- XML文書をターゲット テーブルにシュレッドする方法を定義するXSLTスタイルシートを作成します。
- XSLTスタイルシートを簡単に参照できるように、例えばスタイルシート リポジトリ テーブルにXSLTスタイルシートを格納します。
- XSLT_SHRED_BATCHストアド プロシージャに以下の引数を指定して呼び出します。
- ステップ2で定義したSQL問合わせ
- ステップ4で保存したXSLTスタイルシート
SQL問合わせで返されるXML文書は、XSLTスタイルシートのマッピングに基づいてシュレッドされます。この結果、ターゲット テーブルにそのような文書からのデータが取り込まれます。ターゲットの列にNULLが挿入される場合もあります(XMLで対応する要素が空か欠落している場合など)。入力XML文書で所定の要素パスが見つからない場合、NULLが格納されます。