【數據處理】SQL Server高效大數據量存儲方案SqlBulkCopy

要求將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

相關文章
相關標籤/搜索