LinqからSQL Submitchangess()進行
-
14-10-2019 - |
質問
linqを使用してsqlto古いdbfファイルをmssqlにインポートしています。私はすべての行を読んで、それらをデータベースに追加しています ctx.MyTable.InsertOnSubmit(row)
読み取りフェーズが完了した後、約100 000の保留中のインサートがあります。ctx.SubmitChanges()
当然、長い時間がかかります。
の進捗を追跡する方法はありますか ctx.submitchanges()
?できる ctx.Log
どういうわけかこの目的に使用されますか?
アップデート: :使用することは可能ですか ctx.GetChangeSet().Inserts.Count
ログを使用してステートメントを挿入しますか?
分割 ctx.SubmitChanges()
私はトランザクションが必要なので、小さなチャンクが私のために働いていません。
更新2:インサートをカウントしようとする素敵なClass ActionTextWriterを見つけました。
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
更新3:
最初のコードプロトタイプを作成しましたが、最適化されていません。それは働いているようです:)
ctx.Log = new ActionTextWriter(s => {
counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
ReportProgress(counter);
});
解決
ログを解析し、ActionTextWriterを使用することで進捗状況の情報を得ることができました
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
ctx.Log = new ActionTextWriter(s => {
if (s.StartsWith("INSERT INTO"))
insertsCount++;
});