程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> SqlBulkCoy和普通數據庫操作執行速度對比

SqlBulkCoy和普通數據庫操作執行速度對比

編輯:C#入門知識

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來進行操作!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved