- PR -

XML バルク ロードをストアドから使う方法

1
投稿者投稿内容
sand
大ベテラン
会議室デビュー日: 2007/01/15
投稿数: 247
投稿日時: 2007-06-17 00:29
XML バルク ロード オプションをストアドプロシージャから使用したいです。

巨大なxmlファイルをopenxmlでロードする場合は、xmlバルクロードオプションを使用するらしいのですが、サンプルを探すとvbsやC#などのプログラムからexecuteしているものしか見つかりません。
ストアドからcreate objectなどを使わずに呼び出したいのですが方法はありますでしょうか?



【引用記事】
大規模な XML ドキュメントでは OPENXML を回避する
XML ドキュメント処理では OPENXML コンストラクトが使えるメモリ量に制限があることに注意します。この処
理では、当初のドキュメント サイズよりもずっと大きい場合もある SQL バッファ スペース内に、ドキュメン
ト オブジェクト モデル (DOM) を構築します。また、この処理は、バッファ スペースの 1/8 に制限されてい
て、大型の XML ドキュメントは即座にこのメモリを消費してしまい、サーバー上でメモリ不足エラーを生じさ
せることがあります。ある程度の負荷量でのテストを実施しないうちに、この機能を基にした大型のシステムを
作成しないでください。可能であれば、XML バルク ロード オプションを使用してください。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-06-18 10:56
引用:

巨大なxmlファイルをopenxmlでロードする場合は、xmlバルクロードオプションを使用するらしいのですが、サンプルを探すとvbsやC#などのプログラムからexecuteしているものしか見つかりません。


「xmlバルクロードオプション」って何のことを指しているのか分からなかったので外してる可能性大かもしれませんが・・・。
バルクロードという言葉からすると、私は bcpユーティリティ か BULK INSERT しか思いつかないのですが、sandさんが見つけたサンプルプログラムってbcp使ったりしてますでしょうか?

bcpユーティリティはコマンドラインから使用できる一方、BULK INSERT は Transact-SQL ですので、ストアドに記述することが可能と思われます。

追記-----------------------------------------
投稿してから気付きました。完全に外してますね。
ごめんなさい。

[ メッセージ編集済み 編集者: かめたろ 編集日時 2007-06-18 11:07 ]
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-06-19 14:25
XMLバルクロードって、SQLXMLに含まれるユーティリティでスタンドアロンのCOMコンポーネント(SQLXMLBulkLoad)のことでいいんですよね?コレをストアドプロシージャから直接使うためには、SQLCLRでそれをラップしたようなストアドを作るしかないんじゃないかと思います。

代替策としては、OPENROWSET句でBULKするとかBULK INSERTでどうにかするとかでしょうか。

「sqlxmlbulkload stored」でMicrosoft.comを検索したら、XML Bulk Load Questionてのを見つけました。
1

スキルアップ/キャリアアップ(JOB@IT)