2016-08-05 16 views
0

私はのC#に4つのソース(2つのExcelシート、Oracle、Accessデータベース)からデータをダウンロードし、それらを相互に計算するプログラムを持っています。私はいくつかの大きな結果を得た結果、私は結果をリストに保持します。結果の行数は約120.000になります。 1行は約10MBです。結果はアクセスデータベースに挿入されます。多くのデータをデータベースに挿入する方法

このリストをデータベースに挿入するにはどうすればよいですか?誰かが私に例を与えることができますか?

今、テーブルに行を1つずつ挿入します。それには3時間かかります。

+0

このSQL Serverはありますか? – user3185569

+1

聖なる牛!それぞれ10 MBの120.000行!あなたはそのDBで何をしていますか? – Randy

+2

ネットワーク経由で1.2 GBをドラッグし、3時間かかるデータベースに挿入します。それは公正です。 – user3185569

答えて

2

バルクインサートを使用してください。このような何かを使用するエンティティフレームワークがdbのものと連携する場合は、必要なものです。タイムアウトも最大限にしてください。

using (var transactionScope = new System.Transactions.TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0))) 
      { 
       try 
       { 
        ctx.BulkInsert(productsToSync, new BulkInsertOptions() 
        { 
         TimeOut = 10 * 60 * 1000 
        }); 
        await ctx.SaveChangesAsync(); 
       } 
       catch (Exception ex) 
       { 
        SystemLogManager.AddDataSyncErrorLog(ex); 
       } 
       finally 
       { 
        transactionScope.Complete(); 
       } 
      } 
+0

これにはhttps://efbulkinsert.codeplex.com/が必要ですか?あなたはそれをあなたの答えに含めることができます。 – Botonomous

関連する問題