这两天公司让做一个导数据的功能,从Excel文件中将数据导出并插入到数据库中,起初我是循环每一行数据,然后一条一条的将数据插入,这样做虽然功能上没什么问题,但是如果数据量大的话,会很影响性能。于是在高人的指点下学习了SQLBulkCopy类,该类主要用于批量迁移数据到数据库中,至于数据源不加限制,只要数据可以加载到DataTable或是IDataReader,就可以利用该类批量导入。下面贴一个例子:
DestinationTableName属性定义了要复制表的目标名称
ColumnMappings返回一个SqlBulkCopyColumnMapping项集合,SqlBulkCopyColumnMappingCollection.Add方法参数为数据源类名称,目标表中目标列的名称.也可以先定义一个SqlBulkCopyColumnMapping,然后使用Add方法添加,SqlBulkCopyColumnMapping主要用于与目标数据表的表结构不一致的情况
NotifyAfter指定生成通知事件之前要处理的行数,指定在每次处理行完成的时候发生的事件,比如每次复制了1000行以后就提示1000行复制完成
NorthWindBulkOp.SqlRowsCopied+=
newSqlRowsCopiedEventHandler(OnRowsCopied);
最后WriteToServer方法,把SqlDataReader复制到指定的表中。
这是一个效率最高的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());
}
展开

专业英语翻译君下载-专业英语翻译君3.2.7 免费版
北纬57度游戏下载-57North(北纬57度游戏官方正版)1.0 官方版
Colour安卓版1.0.2 安卓手机版
别动队冒险刺客游戏下载-别动队冒险刺客安卓版1.8 手机版
食物语手游测试版1.0.84安卓正式版
儿童双语动画片-乐看儿童双语动画1.0.0.1 绿色版
手机NFC读扫app下载-手机NFC读扫安卓版1.0 最新版
汪汪公寓30元提现版-汪汪公寓30元红包版1.3.9 提现版
F1赛车模拟3D游戏1.0 安卓版
南宁网约车考试客户端2.2.6 安卓版
砖块堆叠达人最新版下载-BrickMaster(砖块堆叠达人手游)0.0.1 官方版
魔力宝贝放置版游戏下载-魔力宝贝放置版1.2.0 安卓挂机版
考公app下载-考公软件1.0.0最新版
咕力咕力儿童早教软件下载-咕力咕力儿童早教app4.2.1 最新安卓版
长沙火车站官网下载-长沙火车站app1.1官方安卓版
office2003四合一精简版-Microsoft Office 2003 SP3四合一精简版完美安装版
奇幻世界ios变态版1.0 最新版
十二生肖猴年运程软件-麦玲玲2016生肖运势1.0.1 官方最新版
火柴搜索软件下载-火柴搜索最新最热短剧软件3.1.5 最新版本
自动模拟器手机版下载安装-自动模拟器安卓版24.02.24 最新版