这两天公司让做一个导数据的功能,从Excel文件中将数据导出并插入到数据库中,起初我是循环每一行数据,然后一条一条的将数据插入,这样做虽然功能上没什么问题,但是如果数据量大的话,会很影响性能。于是在高人的指点下学习了SQLBulkCopy类,该类主要用于批量迁移数据到数据库中,至于数据源不加限制,只要数据可以加载到DataTable或是IDataReader,就可以利用该类批量导入。下面贴一个例子:
这是一个效率最高的sql数据表转sql语句的工具。
protectedvoidbutBulkCopy_OnClick(objectsender,EventArgse)
{
stringConStr="database=TEST;uid=sa;pwd=sa;server=(local)";
//使用SqlBulkCopy把内存表DataTable里的数据插入答卷数据表
using(SqlBulkCopybcp=newSqlBulkCopy(ConStr))
{
//指定目标数据库的表名
bcp.DestinationTableName="ARTICLE";
//建立数据源表字段和目标表中的列之间的映射
bcp.ColumnMappings.Add("T","TITLE");
bcp.ColumnMappings.Add("C","CONTENTS");
bcp.ColumnMappings.Add("D","DATA");
//定义生成通知事件之前要处理的行数
bcp.NotifyAfter=1000;
//处理完要处理NotifyAfter的行数时触发的事件
bcp.SqlRowsCopied+=
newSqlRowsCopiedEventHandler(OnRowsCopied);
//写入数据库表
bcp.WriteToServer(dt);
//关闭SqlBulkCopy实例
bcp.Close();
}
}
privatevoidOnRowsCopied(objectsernder,SqlRowsCopiedEventArgse)
{
Response.Write(e.RowsCopied.ToString());
}
DestinationTableName属性定义了要复制表的目标名称
ColumnMappings返回一个SqlBulkCopyColumnMapping项集合,SqlBulkCopyColumnMappingCollection.Add方法参数为数据源类名称,目标表中目标列的名称.也可以先定义一个SqlBulkCopyColumnMapping,然后使用Add方法添加,SqlBulkCopyColumnMapping主要用于与目标数据表的表结构不一致的情况
NotifyAfter指定生成通知事件之前要处理的行数,指定在每次处理行完成的时候发生的事件,比如每次复制了1000行以后就提示1000行复制完成
NorthWindBulkOp.SqlRowsCopied+=
newSqlRowsCopiedEventHandler(OnRowsCopied);
最后WriteToServer方法,把SqlDataReader复制到指定的表中。
展开

2018平安寒假专项活动闯关游戏答案-全国中小学生2018年平安寒假专项活动闯关游戏答案完整版【幼儿园+初中+高中】
小小家园手游官方下载-小小家园手游官方版1.0 安卓版
职业发展系统安卓版下载-职业发展系统app3.1.4 官方安卓版
为你选歌app官方下载-为你选歌安卓版4.0.8 最新版
冒险动物超级跑队游戏1.4 最新版
神速快递批量查询工具下载-神速快递批量查询工具1.68最新版
画家之战联机版下载-画家之战联机破解版免安装版
王者十一人游戏下载-王者十一人0.217.1 安卓版
让爱成长关爱儿童ppt模板免费下载
二次函数求根机(让复杂的函数计算工作交给电脑)V1.0.1 单文件绿色版
实用万年历 5.7┊包括公农历节日、干支以及黄历的内容等
aimp3中文版-AIMP3(音乐播放器)3.60 build 1495 Beta 3 绿色中文版
保护海洋电子小报模板19套for a3/a4 word 格式
影楼app专业版下载-影楼专业版(Photo Studio Pro)2.7.11.3468 中文汉化版
MAS激活工具下载-MAS激活工具(Microsoft Activation Scripts)3.0 免费版
海尔XQG60-1011W说明书下载-海尔洗衣机xqg60 1011w使用说明书pdf电子免费版
快速制作寸照-制作一寸照片的软件1.5 中文绿色版
keil uvision4中文补丁-keil uvision4汉化补丁9.00汉化补丁
御天降魔传解包工具-御天降魔传MOD解包工具1.0 绿色免费版