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
.要将一个数据源中大量数据转移到另外一个
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
相关文章推荐
- PageOffice+C#+SqlServer+Aspose.Word+Aspose.Cells实现上传word模板,通过标签保存填写的数据到数据库中
- C# + SqlServer 2008 使用XML大批量数据入库
- sql文件导入大批量数据时,报错:Lost connection to MySQL server during query
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(六)
- c# 程序实现ACCESS数据导入SQL的方法
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- C# 执行多条SQL语句,实现数据库事务(通过Hashtable存储数据) .
- [转]C#:用SqlBulkCopy来实现批量插入数据
- Sql Server每日一练-用SQL实现分布式数据复制
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(六)
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(七)
- 关于transaction(C#/SQL-Server),批量处理数据
- 使用T-SQL实现数据导出/导入(SQLSERVER—>SQLSERVER)
- 用SQL语句将Excel中的数据追加到SQL Server DB中的一个表里
- SQL SERVER VS ORCALE(实现已有数据行自增)
- ASP.NET实现写入和读取图片(C#+SQL Server)
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(一)
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
- SQL SERVER数据类型与C#数据类型对照表
- Access to SQLserver 数据库生迁脚本编写器(DB_CreateSqlEV1.06下载)