WEB开发网
开发学院数据库MSSQL Server 使用SqlBulkCopy进行数据大批量的迁移 阅读

使用SqlBulkCopy进行数据大批量的迁移

 2008-12-31 10:17:09 来源:WEB开发网   
核心提示: BatchSize:属性的整数值;或者如果未设置任何值,则为零,使用SqlBulkCopy进行数据大批量的迁移(2),每一批次中的行数,在每一批次结束时,当事件触发的时候,执行的代码如下:private void btnStart_Click(object sender, EventArg

BatchSize:属性的整数值;或者如果未设置任何值,则为零。每一批次中的行数。在每一批次结束时,将该批次中的行发送到服务器。

BulkCopyTimeOu:超时之前操作完成所允许的秒数。如果操作超时,事务便不会提交,而且所有已复制的行都会从目标表中移除。

ColumnMappings:返回 SqlBulkCopyColumnMapping 项的集合。列映射定义数据源中的列和目标表中的列之间的关系。如果数据源和目标表具有相同的列数,并且数据源中每个源列的序号位置匹配相应目标列的序号位置,则无需 ColumnMappings 集合。但是如果列计数不同,或序号位置不一致,则必须使用 ColumnMappings,以确保将数据复制到正确的列中。

DestinationTableName:指定的目标表中。

NotifyAfter:属性的整数值,或者如果未设置该属性,则为零。定义在生成通知事件之前要处理的行数。

在ColumnMappings属性中,我们可以看到SqlBulkCopyColumnMapping 项,它主要是用来定义SqlBulkCopy实例的数据源中的列与该实例的目标表中的列之间的映射。

结合着上面SqlBulkCopy的属性我们再来看一个综合的例子,此例中我们使用DataTable:

在本例中,我先自己建立一个数据库SqlBulkCopySample,然后建立一个表TblOrder,它主要是用来把Northwind数据库中的Orders表数据全导进来,所以它的表结构基本上和Orders一样,它们以应的关系如下:

   ID (OrderID): int
  Name (ShipName): nvarchar(40)
  Address (ShipAddress): nvarchar(60)
  City (ShipCity): nvarchar(15)
  然后在Northwind数据中创建一个存储过程,如下:
  CREATE PROCEDURE dbo.SelectOrders
  AS
  SELECT OrderID, ShipName, ShipAddress, ShipCity
  FROM Orders

我们在页面中增加一个按钮的点击事件,当事件触发的时候,执行的代码如下:   private void btnStart_Click(object sender, EventArgs e)
  {
  String sourceConnectionString =
  "Data Source=127.0.0.1;Initial Catalog=Northwind;Integrated Security=True";
  String destinationConnectionString =
  "Data Source=127.0.0.1;;Initial Catalog=SqlBulkCopySample;Integrated Security=True";
  DataTable data = SelectDataFromSource(sourceConnectionString);//获取数据
  CopyDataToDestination(destinationConnectionString, data);//复制数据
  }

获取数据非常简单,它只是通过执行存储过程返回一个DataTable的查询结果集,如下:

上一页  1 2 3 4  下一页

Tags:使用 SqlBulkCopy 进行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接