XML フォーマット ファイルについて

Microsoft SQL Server 2005 以降のバージョンには、XML フォーマット ファイルを記述するための構文を定義した XML スキーマが用意されています。このスキーマは XML Schema Definition Language (XSDL) で定義されています。XML フォーマット ファイルはこのスキーマに準拠している必要があります。XML フォーマット ファイルは SQL Server ツールが SQL Server Native Client と共にインストールされている場合のみサポートされます。

注意

SQL Server 2005 以降のバージョンでは、2 種類のフォーマット ファイルがサポートされます。これに対し、Microsoft SQL Server 2000 以前のバージョンでは、1 種類のフォーマット ファイルしかサポートされていません。XML フォーマット ファイルを既存の種類と区別するため、既存の種類のフォーマット ファイルを XML 以外のフォーマット ファイルと呼びます。

XML フォーマット ファイルを使用すると、テーブルまたは非パーティション ビューにデータの一括インポートを行ったり、データの一括エクスポートを行ったりすることができます。XML フォーマット ファイルは、SQL Server 2000 以前のバージョンでサポートされている (および現在でもサポートされている) XML 以外のフォーマット ファイルに代わるものです。XML フォーマット ファイルは XML 以外のフォーマット ファイルに比べ、柔軟かつ強力です。また、理解しやすく容易に作成できます。さらに、人間に読みやすいように書かれているので、一括操作でのデータの解釈方法を容易に理解できます。XML エンコーディングでは、データ ファイルのデータ型およびデータ要素だけでなく、データ要素とテーブル列の間のマッピングを明確に記述できます。

XML フォーマット ファイルは機能を拡張できますが、以前のバージョンとの互換性も保たれます。さらに XML エンコーディングは明確なので、特定のデータ ファイルに対して複数のフォーマット ファイルを容易に作成できます。この特性は、データ フィールドの全体または一部を、さまざまなテーブルまたはビューの列にマップする必要がある場合に役立ちます。

bcp コマンドを使用して、あるテーブルに対する XML フォーマット ファイルを自動的に生成できます。詳細については、「bcp ユーティリティ」を参照してください。

XML フォーマット ファイルの構造

XML 以外のフォーマット ファイルと同様に、XML フォーマット ファイルでもデータ ファイル内のデータ フィールドの形式および構造を定義し、定義したデータ フィールドを 1 つのマップ先テーブル内の列にマップします。

XML フォーマット ファイルには、<RECORD> および <ROW> という 2 つの主要なコンポーネントがあります。

  • <RECORD> にはデータ ファイルに保存するデータをそのまま記述します。

    各 <RECORD> 要素は、1 つ以上の <FIELD> 要素のセットを格納します。それらの要素はデータ ファイル内のフィールドに対応します。基本構文は次のとおりです。

    <RECORD>

       <FIELD .../> [ ...n ]

    </RECORD>

    各 <FIELD> 要素には、特定のデータ フィールドの内容を記述します。個々のフィールドは、テーブル内の 1 つの列にのみマップできます。すべてのフィールドを列にマップする必要はありません。

    データ ファイルのフィールドは、固定/可変長にすることも、任意の文字で区切ることもできます。フィールドの値は、半角文字 (1 バイト表現を使用)、全角文字 (Unicode の 2 バイト表現を使用)、ネイティブ データベース形式、またはファイル名で表現できます。フィールドの値をファイル名で表現する場合、対象になるテーブルの BLOB 列の値を含むファイルをそのファイル名で指すようにします。

  • <ROW> には、データ ファイルから SQL Server テーブルにデータをインポートするときのデータ行の構成方法を記述します。

    <ROW> 要素は、<COLUMN> 要素のセットを格納します。それらの要素はテーブル列に対応します。基本構文は次のとおりです。

    <ROW>

       <COLUMN .../> [ ...n ]

    </ROW>

    個々の <COLUMN> 要素は、データ ファイル内の 1 つのフィールドにのみマップできます。<ROW> 要素内の <COLUMN> 要素の順序により、一括操作で返される順序が決定されます。XML フォーマット ファイルでは、一括インポート操作の対象になるテーブルの列とのリレーションシップがない各 <COLUMN> 要素にローカル名が割り当てられます。

その他のトピック