传智播客--ADO.net--SqlBulkCopy批量插入数据(小白必知)

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一般情况下,我们在向数据库中插入数据时用Insert语句,但是当数据量很大的时候,这种情况就比较缓慢了,这个时候就需要SqlBulkCopy这个类。

SqlBulkCopy本身常用的函数有这么几个

DestinationTableName-----服务器目标表上的名称,也就是你要向哪个表插入大量的数据,这个就设置为那个表名

ColumnMappings-----字段映射,因为是要在本地建立一个Table,然后将整个Table一次性的加入到数据库中,因此需要将本地的Table的字段和数据库表中的字段做好映射关系

WriteToServer-----这个就是写入数据库了,不需要多说

导入的数据是传智播客免费视频上提供的手机号码归属地的信息,插入数据库看了一下,一共有258113条数据,用时大概6秒吧。

PRivatevoidbtnDR_Click(objectsender, RoutedEventArgs e)

{

OpenFileDialog ofd=newOpenFileDialog();

ofd.Filter="文本文件|*.txt";if(ofd.ShowDialog()!=true)

{return;

}

DateTime time= DateTime.Now;//计时,看看花了多长时间DataTable table=newDataTable();//本地创建一个临时表//给临时表添加列名table.Columns.Add("HD");

table.Columns.Add("DQ");

table.Columns.Add("LX");using(StreamReader streamReader=newStreamReader(ofd.FileName,Encoding.Default))//读取文件{while(!streamReader.EndOfStream)

{string[] stringStream = streamReader.ReadLine().Split('\t');//按行读取,通过\t进行分割,得到数组stringHD = stringStream[0].Trim('"');stringDQ = stringStream[1].Trim('"');stringLX = stringStream[2].Trim('"');//将数据插入到本地创建的临时表里DataRow row =table.NewRow();

row["HD"] =HD;

row["DQ"] =DQ;

row["LX"] =LX;

table.Rows.Add(row);

}

}//这部分就是从本地导入到数据库中using(SqlConnection conn=newSqlConnection("Data Source=.;Initial Catalog=imageprocess;Integrated Security=True"))

{

conn.Open();using(SqlBulkCopy bulkCopy=newSqlBulkCopy(conn))

{

bulkCopy.DestinationTableName="T_HM";

bulkCopy.ColumnMappings.Add("HD","HD");//前面的参数是本地的临时Table列名,后面的参数是数据库的列名。两个名称不需要相同,我写相同,是为了方便bulkCopy.ColumnMappings.Add("DQ","DQ");

bulkCopy.ColumnMappings.Add("LX","LX");

bulkCopy.WriteToServer(table);

}

}

TimeSpan TS= DateTime.Now -time;

MessageBox.Show(TS.ToString());

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航