SQLBulkCopy,用於數據庫之間大批量的數據傳遞。通常用於新,舊數據庫之間數據的更新。即使表結構完全不同,也可以通過字段間的對應關系,順利的將數據導過來。
1.初始化SqlBulkCopy對象,用新的連接作為參數。
SqlBulkCopy bulkCopy = new SqlBulkCopy(鏈接字符串);
2.數據源與目的數據表的映射關系(列名要對應)
bulkCopy.ColumnMappings.Add("source",'"dest")
3.設置目標表名
bulkCopy.DestinationTableName = 目標表名;
4.設置一次性處理的行數。這個行數處理完後,會激發SqlRowsCopied()方法。默認為1
bulkCopy.NotifyAfter = 10;
5.傳輸數據
bulkCopy.WriteToServer(sdr);
目前有一個txt文檔,裡面記錄了大量的數據
然後我們用常見的數據庫操作將其導入數據庫中
OpenFileDialog ofd = ofd.Filter = (ofd.ShowDialog() == [] lines = (SqlConnection con = SqlConnection(ConfigurationManager.ConnectionStrings[ DateTime startTime = ( i=;i<=lines.Length;i++ line= [] strs = line.Split( startNum = strs[ city = strs[ city = city.Trim( type = strs[ type = type.Trim( areaNum = strs[ areaNum = areaNum.Trim( (SqlCommand cmd = cmd.CommandText = cmd.Parameters.Add( SqlParameter( cmd.Parameters.Add( SqlParameter( cmd.Parameters.Add( SqlParameter( cmd.Parameters.Add( SqlParameter( DateTime nowTime = TimeSpan ts = nowTime - totalTime = ts.TotalSeconds * lines.Length / (i + );
運行項目,查看需要完成的總秒數。
一共將要運行時間1671秒,將近28分鐘。
然後我們用SqlBulkCopy來讀取數據並存儲。
DataTable table = table.Columns.Add( table.Columns.Add( table.Columns.Add( table.Columns.Add( DateTime start = ( i = ; i <= lines.Length; i++ line = [] strs = line.Split( startNum = strs[ city = strs[ city = city.Trim( type = strs[ type = type.Trim( areaNum = strs[ areaNum = areaNum.Trim( DataRow row = row[] = row[] = row[] = row[] = (System.Data.SqlClient.SqlBulkCopy copy = System.Data.SqlClient.SqlBulkCopy(ConfigurationManager.ConnectionStrings[ copy.DestinationTableName = copy.ColumnMappings.Add(, copy.ColumnMappings.Add(, copy.ColumnMappings.Add(, copy.ColumnMappings.Add(,
不難發現只用了3秒鐘,所以可以看出在對大數據處理時最好使用SqlBulkCopy來進行操作!