[HOWTO] XML 一括ロード コンポーネントを使用して XML を SQL Server にインポートする方法

概要

XML で表記されたデータは、XML 一括ロード コンポーネントを使用して SQL Server 2000 データベースに読み込むことができます。この資料では、データベースの既存のテーブルに XML データを読み込むために必要な手順を説明します。


必要条件

この資料の手順を行うには、次のソフトウェアが必要です。
  • XML for SQL Server 2000 (SQLXML) Web Release 1 以降
以下の予備知識が必要です。
  • XML に関する知識

データを受け取るテーブルの作成

以下の手順を使用して、XML 一括ロード コンポーネントによって処理されるデータを受け取るテーブルを作成します。
  1. MyDatabase という名前で SQL Server にデータベースを作成します。
  2. SQL クエリ アナライザを開き、データベースを MyDatabase に変更します。
  3. クエリ アナライザで以下の SQL ステートメントを実行して、MyDatabase に Customer テーブルを作成します。
    USE MyDatabase
    CREATE TABLE Customer (
    CustomerId INT PRIMARY KEY,
    CompanyName NVARCHAR(20),
    City NVARCHAR(20))

XML データ ソース ファイルの作成

以下のコードはサンプル データのソース コードです。この XML をメモ帳に貼り付け、C:/Customers.xml という名前を付けてファイルを保存します。
<ROOT>
<Customers>
<CustomerId>1111</CustomerId>
<CompanyName>Sean Chai</CompanyName>
<City>NY</City>
</Customers>
<Customers>
<CustomerId>1112</CustomerId>
<CompanyName>Tom Johnston</CompanyName>
<City>LA</City>
</Customers>
<Customers>
<CustomerId>1113</CustomerId>
<CompanyName>Institute of Art</CompanyName>
</Customers>
</ROOT>

マッピング スキーマ ファイルの作成

次のファイルは、XML データ ソースの形式をデータベースの Customer テーブルの形式にマップするために使用します。以下の XML をメモ帳に貼り付け、C:/Customermapping.xml という名前を付けてファイルを保存します。
<?xml version="1.0"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerId" dt:type="int" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Customer">
<element type="CustomerId" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>
</Schema>

XML 一括ロード コンポーネントを実行する VBScript プログラムの作成

以下のスクリプトでは、XML 一括ロード コンポーネントを使用し、「XML データ ソース ファイルの作成」で作成した 3 つのレコードを、「データを受け取るテーブルの作成」で作成したテーブルに挿入します。その際、「マッピング スキーマ ファイルの作成」で説明したマッピング スキーマを使用します。以下の VBScript コードをメモ帳に貼り付け、C:\Insertcustomers.vbs という名前でファイルを保存します。
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "provider=SQLOLEDB.1;data source=MyServer;database=MyDatabase;uid=MyAccount;pwd=MyPassword"
objBL.ErrorLogFile = "c:\error.log"
objBL.Execute "c:\customermapping.xml", "c:\customers.xml"
Set objBL = Nothing
使用している SQL Server インストールでスクリプトが動作するように、コード 2 行目の ConnectionString の資格情報を修正します。2 行目を修正しないと、スクリプトを実行した後に次のエラー メッセージが表示されます。
データ ソースへ接続中にエラーが発生しました。

VBScript プログラムの実行

VBScript プログラム C:\Insertcustomers.vbs を実行して 3 つの顧客 (Customer) のレコードを Customer テーブルに挿入します。


動作の検証

SQL クエリ アナライザで、MyDatabase データベースに切り替え、次のクエリを実行します。
SELECT * FROM Customer
「XML データ ソース ファイルの作成」で作成した 3 つのレコードが Customer テーブルに含まれています。


別の方法

XML 一括ロード コンポーネントには、以下の機能があります。
  • XML スキーマ ファイルで指定したリレーションシップを使用して、XML ドキュメントを複数のテーブルにマップします。
  • 一括ロードの前に、テーブル スキーマを生成します。
  • ストリームから一括ロードを行います。
  • オーバーフロー列に一括ロードを行います。



関連情報

SQLXML Books Online 「Performing Bulk Load of XML Data」


関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 316005 (最終更新日 2003-05-13) を基に作成したものです。


この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:316005 - 最終更新日: 2011/05/15 - リビジョン: 1

フィードバック