拷贝批量数据到SQL Server数据库。


一些应用需求要求插入大额的数据到SQL server数据库中。这时候再用INSERT语句并不是一个高效率的方法。SQL Server提供了一个批量插入数据的类:SqlBulkCopy。本文用一个例子来阐述这个 类怎么在你的程序中使用。
例子:

SqlConnection sourceConn  =   new  SqlConnection
(
" Data Source=./sqlexpress;
initial catalog = northwind;integrated security = true " );
sourceConn.Open();
SqlCommand cmd 
=   new  
SqlCommand(
" select * from employees " , sourceConn);
SqlDataReader reader 
=  cmd.ExecuteReader();
SqlConnection destConn 
=   new  
SqlConnection(
" Data Source=./sqlexpress;
initial catalog = northwind;integrated security = true " );
destConn.Open();
SqlBulkCopy bcp 
=   new  SqlBulkCopy(destConn);
bcp.DestinationTableName 
=   " Employees " ;
bcp.ColumnMappings.Add(
" LastName " " LastName " );
bcp.ColumnMappings.Add(
" FirstName " " FirstName " );
bcp.WriteToServer(reader);
destConn.Close();
reader.Close();
sourceConn.Close();

 

这里,我们创建了两个SqlConnection对象。一个用来从源数据库取数据,另一个是用来打开目的数据库的。在上面的例子中目的和源数据库的连接是相同的,但是他们也是可以不同的连接。

然后我们从Employees表中用SqlDataReader类来取数据。SqlBulkCopy类的构造函数接受参数为目的数据库连接的对象。DestinationTableName 属性用来指定目的数据库中表的名字。如果目的和源数据表的各列不同,你需要用ColumnMappings来指定各列的映射。最后,你需要调用WriteToServer方法,然后传递DataReader来把数据插入到目的数据库中。你同样可以用DataTable来代替DataReader来保存那些需要插入的记录。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值