SQLServer中批量插入数据方式

技术方案:
ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高。

 

代码
      ///   <summary>
        
///  使用SqlBulkCopy方式插入数据
        
///   </summary>
        
///   <param name="dataTable"></param>
        
///   <returns></returns>
         private   static   long  SqlBulkCopyInsert()
        {
            Stopwatch stopwatch 
=   new  Stopwatch();
            stopwatch.Start();

            DataTable dataTable 
=  GetTableSchema();
            
string  passportKey;
            
for  ( int  i  =   0 ; i  <  count; i ++ )
            {
                passportKey 
=  Guid.NewGuid().ToString();
                DataRow dataRow 
=  dataTable.NewRow();
                dataRow[
0 =  passportKey;
                dataTable.Rows.Add(dataRow);
            }

            SqlBulkCopy sqlBulkCopy 
=   new  SqlBulkCopy(connectionString);
            sqlBulkCopy.DestinationTableName 
=   " Passport " ;
            sqlBulkCopy.BatchSize 
=  dataTable.Rows.Count;
            SqlConnection sqlConnection 
=   new  SqlConnection(connectionString);
            sqlConnection.Open();
            
if  (dataTable != null   &&  dataTable.Rows.Count != 0 )
            {
                sqlBulkCopy.WriteToServer(dataTable);
            }
            sqlBulkCopy.Close();
            sqlConnection.Close();

            stopwatch.Stop();
            
return  stopwatch.ElapsedMilliseconds;
        }
 
     private static DataTable GetTableSchema()
        {
            DataTable dataTable 
= new DataTable();
            dataTable.Columns.AddRange(
new DataColumn[] { new DataColumn("PassportKey") });
            
            
return dataTable;
        }

 

 

你可能感兴趣的:(sqlserver)