要求將Excel數據,大批量的導入到數據庫中,儘可能少的訪問數據庫,高性能的對數據庫進行存儲。sql
一個比較好的解決方案,就是採用SqlBulkCopy來處理存儲數據。數據庫
SqlBulkCopy存儲大批量的數據很是的高效,就像這個方法的名字同樣,能夠將內存中的數據表直接的一次性的存儲到數據庫中,而不須要一次一次的向數據庫Insert數據。app
初次實驗,百萬級別的數據表,也只需幾秒時間內就能夠徹底的存入數據庫中,其速度,比傳統的Insert方法不止快不少倍。下面,我將用代碼,介紹其用法。性能
#region SqlBulkCopy /// <summary> /// SqlBulkCopy /// </summary> /// <param name="connectionString">目標鏈接字符</param> /// <param name="TableName">目標表</param>yyy /// <param name="dt">源數據</param> public static void SqlBulkCopyByDatatable(string TableName, DataTable dt,string ConnectionStrings="") { if (string.IsNullOrWhiteSpace(ConnectionStrings)) { ConnectionStrings = System.Configuration.ConfigurationManager.ConnectionStrings["KTGJVIPHallDBConnection"].ToString(); } using (SqlConnection conn = new SqlConnection(ConnectionStrings)) { using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(ConnectionStrings, SqlBulkCopyOptions.UseInternalTransaction)) { try { sqlbulkcopy.DestinationTableName = TableName; for (int i = 0; i < dt.Columns.Count; i++) { sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); } sqlbulkcopy.WriteToServer(dt); } catch (System.Exception ex) { throw ex; } } } } #endregion }
將內存中個DataTable 數據一次性的存入數據庫中,只要內存中的數據表格的結構跟數據庫中的表格結構同樣,就能夠了,若是數據庫中包含自增列字段,咱們能夠不須要在內存表中定義,當數據保存到數據庫中的時候,自增列會自動生成數據的。spa