外部ユーティリティ (つまり bcp) を使用せずに、Excel テーブル (VBA 配列) から SQL 2008 のテーブルにデータを取得する最速の方法を知っている人はいますか? 私のデータセットは通常 6500 ~ 15000 行、約 150 ~ 250 列であることに注意してください。そして、自動化された VBA バッチ スクリプト中に約 20 ~ 150 個のファイルを転送することになります。
Excel テーブル (VBA) から SQL 2008 に大量のデータを取得する方法をいくつか試しました。以下にリストします。
方法 1. テーブルを VBA 配列に渡し、ストアド プロシージャ (ADO) に送信 -- SQL への送信が遅い
方法 2. 切断された RecordSet を作成し、ロードしてから同期します。-- SQL への送信が非常に遅い
方法 3. テーブルを VBA 配列に配置し、配列をループして連結し (区切り記号を使用)、ストアド プロシージャに送信します。-- SQL への送信は低速ですが、方法 1 または 2 よりも高速です。
方法 4. テーブルを VBA 配列に配置し、配列をループして連結し (区切り記号を使用)、ADO recordset .addnew コマンドで各行を配置します。-- SQL への送信は非常に高速 (方法 1 ~ 3 よりも約 20 倍高速) ですが、別の手順を使用してそのデータを分割する必要があり、かなりの待ち時間が追加されます。
方法 5. テーブルを VBA 配列に入れ、XML にシリアライズし、VARCHAR としてストアド プロシージャに送信し、ストアド プロシージャで XML を指定します。-- SQL への送信が非常に遅い (方法 1 または 2 よりも約 100 倍遅い)
不足しているものはありますか?