248 MBのログファイルがあり、これはGBまで拡張できます。だから、そこにできる行数を想像することができます。すべての行をSQL Serverデータベースのテーブルにインポートする必要があります。そのために、まずDataTableを作成し、ログファイルのすべての行をそのDataTableに新しい行として追加します。これはかなり速く起こります。約30秒で100万以上のレコードがテーブルに追加されます。テーブルが行で満たされたら、ストアドプロシージャを使用してDataTableのレコードをデータベースにインポートします。しかし、このフェーズは非常に重く実行されます。今私は、代わりにSqlBulkCopy WriteToServerメソッドを使用する必要がある場合、または私はこの方法で保持する必要がありますか? SqlBulkCopyが優れた選択肢であれば、DataTableまたはIDataReaderのバージョンを使用する必要があります。前もって感謝します。データをインポートするのにSqlBulkCopyまたはストアドプロシージャを使用する必要があります
0
A
答えて
2
このような実ボリュームのデータインポートには、SqlBulkCopyを使用します。 SqlDataAdapterとのパフォーマンスの差は大きくなる可能性があります。例えばI 100K行インポートするための性能比較などblogged:
SqlBulkCopy:1.5885s
SqlDataAdapterオブジェクト:あなたはSqlBulkCopyでTableLockオプションを使用する場合
25.0729sあなたも、高いスループットを得ることができ、私のテストでインポートを取りました次に0.8229sに下がります。
SqlBulkCopyを使用すると、データのセグメントを同じ宛先テーブルに並行してバルクロードすることができます。別のexternal linkの申し訳ありませんが、私はそれが適切だと思います。これは最適なパフォーマンスのためにヒープテーブルにロードすることです。インデックスはありません。現在のシナリオではオプションではないかもしれませんが、確かに知る価値があります。
関連する問題
- 1. jqueryデータテーブルを使用するにはどのようなデータをインポートする必要がありますか?
- 2. 空間データを使用する必要がありますか?
- 3. 設定データをキャッシュするためにプロパティまたはディクショナリオブジェクトを使用する必要があります
- 4. ストアドプロシージャでトランザクションを使用する必要はありますか? [MSSQL 2005]
- 5. Reduxでは、この場合、データにアクセスするためにストアをインポートする必要がありますか?
- 6. flask.ext.sqlalchemyまたはflask_sqlalchemyをインポートする必要がありますか?
- 7. アプリケーションにAsyncTaskまたはIntentServiceを使用する必要がありますか?
- 8. センサーデータにタイムスタンプまたは日時を使用する必要があります
- 9. RubyMineにrbenvまたはRVMを使用する必要があります
- 10. クラスを使用してインポートする場合は、PHPDocでFQNを使用する必要がありますか?
- 11. typescriptを使用した角度 - コントローラまたはサービスにデータを保存する必要がありますか?
- 12. VBAを使用してExcelからSQL Serverにデータをインポートする必要があります
- 13. iOSはNSMutableArrayまたはNSMutableDictionaryを使用する必要がありますか?
- 14. Symfony2では、エンティティまたはカスタムリポジトリを使用する必要があります
- 15. 私はPurePDFまたはAlivePdfを使用する必要があります
- 16. 私はurandomまたはopenssl_random_pseudo_bytesを使用する必要がありますか?
- 17. ビューベースのセルまたはバインディングを使用してテーブルビューにデータを追加する必要があります
- 18. CryptoとencodeBase64URLSafeStringを使用するには、どのパッケージをインポートする必要がありますか?
- 19. Microsoft Open XMLを使用するには、どのタイプライブラリをインポートする必要がありますか?
- 20. 私はsingletableviewを使用する必要がありますか?
- 21. 私はdjango reset_queries()を使用する必要があります
- 22. はcaptchaを使用する必要がありますか?
- 23. 私はRedisLocks(ServiceStack.Redis)を使用する必要があります
- 24. 私はフォームタグを使用する必要がありますか?
- 25. SafeValueは、[プロパティ]を使用する必要があります=バインディング:
- 26. インポートされたモジュールですがまだフルネームを使用する必要があります
- 27. ベクトルグラフィックスにMySQL Geo-Spatialデータ型を使用する必要があります
- 28. objective-c gettimeofdayをインポートする必要がありますか?
- 29. @synthesizeをまだ使用する必要がありますか?
- 30. オンラインゲームにTCPを使用する必要がありますか?
SqlBulkCopyで多くのことを実践してきたので、「タイムアウトの期限が切れました。完了までにタイムアウト時間が経過しました...」というエラーが表示されます。私は接続タイムアウトを600秒に増やしました。しかし、私は半分の時間でエラーを取得します。 –
BulkCopyTimeoutをSqlBulkCopy(秒単位)に設定してみてください:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.bulkcopytimeout.aspx – AdaTheDev
@AdaTheDevありがとうございます。あなたは時間のトンを保存しました –