.csv
ファイルから4000万レコードをデータベースに挿入する必要があります。csvファイルから何百万ものレコードをSQL Serverデータベースに挿入する適切な方法は何ですか?
Windowsサービス1:
SqlBulkCopy
を使用して、成功テーブル(中間テーブル)に有効なレコードを挿入するレコードの- を有効にCSV
- を読む
- 。
Windowsサービス2.
- メインに挿入するデータベースに各レコードを送信するこれら10 000
- のためのforeachを実行している時間
- で成功テーブルから10件の000レコードを取得表。
Windowsサービス1は、約30〜40分かかりますが、Windowsのサービス2は、タスク(最小時間)を完了するのに約5時間かかります。私はこれを行うには2つの方法がありますが、どちらがより良いと提案のために開いているかを判断することはできません。ループ
から手順非同期呼び出しながら、我々が使用できるジョブの時計を使用して
- トランザクションロックを使用する私の前提に従えば、テーブルと他のプロセスがそれに取り組む必要があるため、プロシージャ内でトランザクションを使用しており、非同期で動作します。
百万でどのようにSQL取引このような大規模なデータ入力と周りあまりにも読んでいいか? SqlBulkCopyは唯一のものです。 「foreachを実行する」は、おそらく弱い領域です。カーソルを使用している場合は、照会を再設定して、それがベースになるようにしてください。 –
Windowsサービス1ではsqlbulkcopyを使用していますが、2番目のWindowsサービスプロシージャで特定の検証を実行するので、bulkcopyを使用することはできません。別のものは、一括コピーを使用すると一度に1つのlakhレコードセットsqlの一括コピーを使用しても、1つのレコードが失敗しても、これを記録する必要があるか、またはどのレコードにこのエラーがあるかを知る必要があるため、バルクコピーを使用することはできません – sainath
別のアプローチの場合はビットですが、統合サービスには、真ん中で変換できる一括挿入があります。私はSSISで1時間以上かかるとは思っていません – Caz1224