2010-12-02 16 views
0

私は良いSQLプログラマではありませんが、基本的な知識しかありませんが、高速データ読み込みのためのBCPについて聞いたことがあります。私はインターネットを検索しましたが、これはコマンドラインユーティリティではなく、コードで使用できるものと思われます。SQL Server 2008とBCPを使用した高速バッチ挿入/更新

問題は、SQL Server 2008データベースで非常に高速な挿入と更新ができるようにすることです。私はにデータを供給できるでしょう

  • 私は列の
  • 名に対して、挿入/更新操作を実行するテーブルの名前を:私は受け入れるだろう、データベースの機能を持っていると思います
  • CSV形式またはSQLは愚か高速
  • 関数は、このCSV strinを読み取ることになる。この関数挿入または更新操作を

を実行する必要が天気を示すフラグを読み取ることができるものでデータテーブルを挿入/更新するのに必要なコードを生成します。

次に、その関数をテーブル名、列名、CSV文字列としてシリアル化されたオブジェクトのリスト、および挿入/更新フラグを渡して呼び出すために、C#でコードを記述します。

ご覧のとおり、大量のデータを扱うプロジェクト、つまり私の会社のフレームワークの候補者に適した、高速で汎用的なものです。

私は正しいと思いますか?これは良いアイデアですか?そのBCPのことを使うことはできますか?それはあらゆる場合に適していますか?

ご覧のとおり、これにはいくつかの指示が必要です...事前にお手伝いをしてください!

+0

あなたはどのように多くの行を挿入する/更新を許可されない場合がありbulkadmin権限が必要だろうか? – Sam

+0

これは通常、約10,000ものですが、時には50万以上になることもあります。 –

答えて

1

C#では、SQLBulkCopyをご覧ください。これは、SSISがバックグラウンドで使用するものです。

bcp/BULK INSERT真の場合、あなたは

+1

"あなたはバルクアドミニストレーターの権利が必要です" - 何かのためのフレームワークを構築しているときに不吉なセキュリティのことをしないのが最善です。 – Sam

+0

ニース、私はSqlBulkCopyクラスについて知りませんでした。それは私のために正しいことのように見えます。ありがとう! –

+0

@Sam:あなたのお店ではうまくいきません。 KISSなど:-) – gbn

1

SQL Server統合サービス(SSIS)の使用を検討しましたか。それは、あなたが描いていることを正確に行うように設計されていますそれは非常に速いです。トランザクションベースでデータを挿入できます。そして、それをスケジュールに従って実行するように設定することができます。そして、はるかに。

関連する問題