码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-11-27 11:59:57      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

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

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

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

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

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

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

bubuko.com,布布扣

 private void btnDR_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "文本文件|*.txt";
            if(ofd.ShowDialog()!=true)
            {
                return;
            }
            DateTime time = DateTime.Now;//计时,看看花了多长时间
            
            DataTable table = new DataTable();//本地创建一个临时表
            //给临时表添加列名
            table.Columns.Add("HD");
            table.Columns.Add("DQ");
            table.Columns.Add("LX");
            using(StreamReader streamReader=new StreamReader(ofd.FileName,Encoding.Default))//读取文件
            {
                while(!streamReader.EndOfStream)
                {
                    string[] stringStream = streamReader.ReadLine().Split(\t);//按行读取,通过\t进行分割,得到数组
                    string HD = stringStream[0].Trim(");
                    string DQ = stringStream[1].Trim(");
                    string LX = stringStream[2].Trim(");
                    //将数据插入到本地创建的临时表里
                    DataRow row = table.NewRow();
                    row["HD"] = HD;
                    row["DQ"] = DQ;
                    row["LX"] = LX;
                    table.Rows.Add(row);
                }
            }
            //这部分就是从本地导入到数据库中
            using(SqlConnection conn=new SqlConnection("Data Source=.;Initial Catalog=imageprocess;Integrated Security=True"))
            {
                conn.Open();
                using(SqlBulkCopy bulkCopy=new SqlBulkCopy(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());           
        }

 

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

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/ZXdeveloper/p/4125857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!