ITPub博客

首页 > Linux操作系统 > Linux操作系统 > sqlbulkcopy 批量复制数据

sqlbulkcopy 批量复制数据

原创 Linux操作系统 作者:mzr_cj 时间:2009-03-11 15:48:19 0 删除 编辑
曾经做过一个网站,某一页需要这样处理:
 
把两个表查询出的结果放在一个GridView中,然后从GridView中检索中日期相同的数据并计算.
 
当时的一个同事用了联接查询,但表联接的语句让我看了头疼,大概有五行,所以我自己去找了另一种方法,
我在数据库中新建了一个空表,设置好结构.然后把GridView中数据批量复制到这个空表中,然后从此表中
查询数据,不太繁琐,又容易理解.
 
 
在软件开发中,把数据从一个地方复制到另一个地方是一个普遍的应用。在很多不同的场合都会执行这个操作,
包括旧系统到新系统的移植,从不同的数据库备份数据和收集数据。
ASP.NET 2.0有一个SqlBulkCopy类,它可以帮助你从不同的数据源复制数据到SQL SERVER数据库。
本文示范SqlBulkCopy类的不同应用。

下面的代码的作用是把数据从源表复制到目的表。
private static void PerformBulkCopy()
{
  string connectionString =
@"Server=localhost;Database=Northwind;Trusted_Connection=true";
                      
  // 源
  using (SqlConnection sourceConnection = new SqlConnection(connectionString))
  {
    SqlCommand myCommand = new SqlCommand("SELECT * FROM Products_Archive",
sourceConnection);
    sourceConnection.Open();
    SqlDataReader reader = myCommand.ExecuteReader();
              
    // 目的
    using (SqlConnection destinationConnection = new
SqlConnection(connectionString))
    {
      // 打开连接
      destinationConnection.Open();
              
      using (SqlBulkCopy bulkCopy = new
SqlBulkCopy(destinationConnection.ConnectionString))
      {
        bulkCopy.BatchSize = 500;
    bulkCopy.NotifyAfter = 1000;
        bulkCopy.SqlRowsCopied += new
SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);
        bulkCopy.DestinationTableName = "Products_Latest";
        bulkCopy.WriteToServer(reader);                  
      }
    }
    reader.Close();               
              
  }        
}
假如你要从Products_Archive表中把所有的产品名称及其数量复制到Products_TopSelling表里。
private static void PerformBulkCopyDifferentSchema()
{
  string connectionString =
@"Server=localhost;Database=Northwind;Trusted_Connection=true";
  DataTable sourceData = new DataTable();
  // 源
  using (SqlConnection sourceConnection = new SqlConnection(connectionString))
  {
    SqlCommand myCommand = new SqlCommand("SELECT TOP 5 * FROM
Products_Archive", sourceConnection);
    sourceConnection.Open();
    SqlDataReader reader = myCommand.ExecuteReader();
    // 目的
    using (SqlConnection destinationConnection = new
SqlConnection(connectionString))
    {
      // 打开连接
      destinationConnection.Open();
      using (SqlBulkCopy bulkCopy = new
SqlBulkCopy(destinationConnection.ConnectionString))
      {
        bulkCopy.ColumnMappings.Add("ProductID", "ProductID");
        bulkCopy.ColumnMappings.Add("ProductName", "Name");
        bulkCopy.ColumnMappings.Add("QuantityPerUnit", "Quantity");
        bulkCopy.DestinationTableName = "Products_TopSelling";
        bulkCopy.WriteToServer(reader);
      }
    }
    reader.Close();
  }
}

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21022866/viewspace-566834/,如需转载,请注明出处,否则将追究法律责任。

上一篇: IIS安装故障
请登录后发表评论 登录
全部评论

注册时间:2009-03-05

  • 博文量
    17
  • 访问量
    73554