您的位置:首页 > 数据库

C#实现大批量转移数据到SQl SERVER DB.

2010-11-19 23:58 429 查看
工作中接到一个需求
.要将一个数据源中大量数据转移到另外一个
SQL SERVER数据库的表中
.
这次的方案是开发一个应用程序做中转
,应用程序先得到数据源的数据
,再将得到的数据集插入到目标数据库中
.
得到数据集很简单
,重点在于把本地数据集的数据转移到目标数据库里
.
我用了两种方法分别实现了这项功能
.
1. 用
SQLCOMMAND逐条将数据集的
ROW插入到目标表里
.这种方式费时费力而且效率很低
. 执行一次大概
5000行的插入动作大概须要
1分钟左右
.

2. 利用
ADO.Net 2.0新提供的
SqlBulkCopy类编写自己的大量复制过程
. 这个类可完成以下操作
:

a) 单次大量复制操作
.

b) 多次大量复制操作
.

C)在事务中执行大量复制操作
.
具体的实例代码如下
.

String
distinctionTableName=”ReportTable”;

using(SqlBulkCopy
bcp=new SqlBulkCopy(tempConnector.OpenDataBase()))

//sqlConnecter
是到目标数据库的连接
.

{

bcp.DestinationTableName = distinctionTableName;

// distinctionTableName
是目标数据库的表名称
.

bcp.BulkCopyTimeout = 120000;

bcp.BatchSize = 10000;

bcp.WriteToServer(tempDS.Tables["valueTable"]);
//tempDS.Tables["valueTable]
是已经得到的本地数据集
.

Debug.WriteLine("inserted
" + bcp.NotifyAfter.ToString() + "rows"
);

bcp.Close();

}

实现的代码很少而且执行效率非常高
.
同样执行一次
5000行的插入动作只须不到
5秒的时间
.

有关
SqlBulkCopy类的详细定义
.参考 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐