2017-10-10 12 views
0
  • 数百のSQLテーブルへ
  • 私は、データセットをC#.NETを使用しています、あなたのようにtableadaptes以下の擬似コードで読み取ることができます
  • パフォーマンスが悪い:100行/秒を超えています。 コードを改善するにはどうすればよいですか?

擬似コード更新データ:悪いパフォーマンス私は、行データの数千人を救うために持っているすべてのCSV用のCSV</li> <li>の

var dsMaster = new DS_Master(); 
var el99TestTableAdapter = new EL_99_TESTTableAdapter(); 

Cycle 
    var el99TestRow = dsMaster.EL_99_TEST.NewEL_99_TESTRow(); 
    dsMaster.EL_99_TEST.Rows.Add(el99TestRow); 
end Cycle 

el99TestTableAdapter.Adapter.Update(dsMaster.EL_99_TEST); 
+0

ため< 5秒は、SSISは、ここではオプションではありませんか?そうでない場合は、SQLの大きなブロックをパラメータ化することは、私が知っている最速のものを実行するでしょう。しかし、クエリに含めることができるパラメータの数には限界があります(私は思っていますが、32,000と思っています)。 – DiskJunky

+0

可能な重複:https://stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable。 – jsanalytics

+0

@jstreet、それは実際には重複していません - OPはCSVをインポートする効率的な方法を求めていますが、CSVをインポートする方法ではありません – DiskJunky

答えて

0

これはテストされ、優れたソリューションです:85000行

private void BulkSaveCsvData(DataTable dt, string destinationTableName) 
    { 
     using (var bulkCopy = new SqlBulkCopy(_dbConnecion, SqlBulkCopyOptions.Default)) 
     { 
      foreach (DataColumn col in dt.Columns) 
      { 
       bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); 
      } 
      bulkCopy.BulkCopyTimeout = 600; 
      bulkCopy.DestinationTableName = destinationTableName; 
      bulkCopy.WriteToServer(dt); 
     } 
    } 
関連する問題