質問

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++;
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top