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

文書翻訳 文書翻訳
文書番号: 316005 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

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年5月15日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
キーワード:?
kbsqlmanagementtools kbhowtomaster KB316005
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com