博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
传智播客--ADO.net--SqlBulkCopy批量插入数据(小白必知)
阅读量:5319 次
发布时间:2019-06-14

本文共 2379 字,大约阅读时间需要 7 分钟。

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

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

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

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

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

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

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());                   }

 

转载于:https://www.cnblogs.com/ZXdeveloper/p/4125857.html

你可能感兴趣的文章
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>