2016-08-12 6 views
-5

ファイルに100万行のデータがありますが、すべてのレコードをSQL Serverに挿入します。挿入中に、サーバー上の既存のデータと比較していますが、比較が満足すれば、サーバー上の既存のレコードを更新するか、ファイルからレコードを挿入します。大きなデータセット用のSQL Server一括挿入

私は現在、この作業を完了するのに3時間以上かかるC#からループしています。誰もがパフォーマンスを改善するためのアイデアを提案できますか?

ありがとう、 Xavier。

+1

BCP ..................... –

+0

あなたの返事をありがとう。私は一括コピープログラムで既存のデータとの比較を行うことができますか?私はこれを初めて使っています – xavier

+0

中間テーブル(ヒープ)にデータをロードし、インデックスを作成し、比較し、最終的にターゲットテーブルを更新する必要があります。 BCPまたはその他のバルクローディング方式では、通常10〜20秒かかります。最大数分です。 – Anton

答えて

0
  1. チェックフルまたは単純復旧モードで使用しているデータベースの場合:

    SELECT recovery_model_desc FROM sys.databases WHERE name = 'MyDataBase';

  2. データベースは、あなたがすぐそこステージング表を作成することができSIMPLEリカバリモードである場合。 Fullモードの場合は、Simpleモデルの別のデータベースにステージングテーブルを作成することをお勧めします。 (すでに示唆したように、例えばBCPのための)

  3. 挿入ターゲットテーブルに存在しないステージング表からのデータのみを、任意のBulkInsert操作/ツールを使用してください。 (あなたがそれを行う方法を願ってほしい)
+0

ありがとう – xavier

関連する問題