`

在asp.net 2.0中使用SqlBulkCopy类迁移数据

    博客分类:
  • .NET
阅读更多

  我们经常要在一个表中将数据迁移到另一个表,当然,用的方法十分多了。在.net 2.0中,提供了一个sqlbulkcopy类,也可以实现如下的操作,下面简单介绍下。比如一个表如下
CREATE TABLE Person3
(

PersonID int IDENTITY(1,1) PRIMARY KEY,
Name nvarchar(200),
Email nvarchar(200),
Picture image

)

INSERT INTO Person3(Name,Email,Picture)
SELECT Name,Email,Picture FROM Person

假设person表已经存在了,则上面的语句可以往person3表中插入数据(在sql server 2005中执行)。现在我们使用下面的代码来实现
   string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;

SqlConnection myConnection = new SqlConnection(connectionString);

SqlCommand myCommand = new SqlCommand("SELECT * FROM Person", myConnection);

myConnection.Open();

SqlDataReader dr = myCommand.ExecuteReader();

SqlConnection myNewConnection = new SqlConnection(connectionString);

myNewConnection.Open();

SqlBulkCopy bulk = new SqlBulkCopy(myNewConnection);

bulk.DestinationTableName = "[Person3]";

try

{

bulk.WriteToServer(dr);

}

catch (Exception ex)

{

Response.Write(ex.Message);

}

finally

{

myNewConnection.Close();

dr.Close();

myConnection.Close();

bulk.Close();

}

  下面来解析下。首先,新建一个数据库连接,之后是很经典的代码了,从person表中拿出数据,当到datareader中去。之后,我们又新建立了个数据连接,之后,使用

SqlBulkCopy bulk = new SqlBulkCopy(myNewConnection);

bulk.DestinationTableName = "[Person3]";

其中,将mynewconnection作为参数传到 sqlbulkcopy类的构造参数中去,并指定目标迁移的表名是person3.
   之后,再使用
bulk.WriteToServer(dr);就可以迁移了。
    而上面的person表和person3的结构是完全相同的,那么如果结构不同的,怎么办呢?下面举例子说明,创建一个表person2
 
CREATE TABLE Person2
(
PersonID int IDENTITY(1,1) PRIMARY KEY,
FirstName nvarchar(200),
LastName nvarchar(200),

Email nvarchar(200),
Picture image
)
 如果我们按上面将person表迁移到person2表中去,将会出错,因为字段不同,而我们将采用下面的代码
  string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;

SqlConnection myConnection = new SqlConnection(connectionString);

SqlCommand myCommand = new SqlCommand("SELECT * FROM Person", myConnection);

myConnection.Open();

SqlDataReader dr = myCommand.ExecuteReader();

SqlConnection myNewConnection = new SqlConnection(connectionString);

myNewConnection.Open();

SqlBulkCopy bulk = new SqlBulkCopy(myNewConnection);

bulk.DestinationTableName = "[Person2]";

bulk.ColumnMappings.Add("Name", "LastName");

bulk.ColumnMappings.Add("Email", "Email");

bulk.ColumnMappings.Add("Picture", "Picture");

try

{

bulk.WriteToServer(dr);

}

catch (Exception ex)

{

Response.Write(ex.Message);

}

finally

{

myNewConnection.Close();

dr.Close();

myConnection.Close();

bulk.Close();

}

  可以看到,这里使用bulk.ColumnMappings.Add(“。。。”,“。。。”)来强制规定,源目标字段和哪一个目标表的字段相匹配了。
   据说用sqlbulkcopy类,在数据多的情况下,性能是十分好的,呵呵。


 

分享到:
评论

相关推荐

    在ASP.NET 2.0中操作数据:批更新数据(源码)

    此外,ASP.NET 2.0还引入了SqlBulkCopy类,用于快速将大量数据从一个数据源复制到SQL Server表中,这是批处理的另一种形式。SqlBulkCopy非常适合一次性插入大量记录,而无需为每条记录创建和执行单独的INSERT语句。 ...

    利用C#+ASP.Net 2.0技术实现对SQL2005的数据快速拷贝处理程序例子代码

    在IT行业中,数据库的数据操作是核心任务之一,而高效的数据拷贝处理对于系统性能和数据迁移至关重要...通过深入理解并运用SqlBulkCopy类,开发者可以有效提升数据库操作的效率,特别是在数据迁移、备份恢复等场景下。

    ASP.NET2.0创建数据访问层

    本文档将详细介绍如何在ASP.NET 2.0环境中创建数据访问层,并在此基础上构建业务逻辑层和表现层。 #### 数据访问层(DAL)的作用 数据访问层的主要功能是与数据库进行交互。它负责执行对数据库的操作,如查询、插入...

    pro ado.net 2.0 章节源码

    ADO.NET 2.0 是微软开发的一个用于处理数据访问的框架,它在.NET Framework中扮演着核心角色。这个"Pro ADO.NET 2.0 章节源码"的压缩包提供了该书籍中各章节的源代码示例,旨在帮助读者深入理解ADO.NET 2.0的工作...

    ADO.NET 2.0的新增功能

    ADO.NET 2.0 是微软.NET Framework的重要组件,主要用于数据访问和管理。...这些特性在ADO.NET 2.0中增强了数据访问的灵活性、性能和可管理性,使得开发人员能够更加高效地处理数据操作,尤其是在大型企业级应用中。

    在web2.0中利用sqlbulkcopy大批量传输数据

    本资源实现了利用sqlBulkCopy实现大批量传输数据,提供数据库,数据库中有一个sql语句将该语句执行一次即可向数据表中插入十万条数据,根据需要可执行多次。 本资源使用C#语言,数据库为sqlserver,经测试六十万条...

    C#使用SqlBulkCopy批量复制数据到数据表

    在C#编程中,`SqlBulkCopy`类是用于高效地将大量数据从源(如DataTable或IDataReader)批量复制到SQL Server数据库表中的工具。这个类特别适用于需要快速迁移大量数据的场景,其性能远优于使用INSERT语句逐行插入...

    .net framework2.0

    此外,ADO.NET在2.0版本中也得到了增强,新增了Dataset的Merge方法,用于合并两个数据集,以及SqlBulkCopy类,允许快速大量地将数据导入到SQL Server表中。还有ASP.NET的改进,如AJAX支持,使得Web应用程序能够实现...

    数据库备份与恢复

    在ASP.NET 2.0中处理数据库备份与恢复,可以帮助开发者确保在系统故障、数据丢失或恶意攻击时能够快速恢复业务正常运行。 首先,我们需要理解数据库备份的基本概念。数据库备份是将数据库中的数据复制到其他存储...

    读取Excel数据导入SQL Server数据库中(asp.net)代码实例

    在ASP.NET开发中,有时我们需要将Excel数据批量导入到SQL Server数据库中,这在数据分析、报表生成或系统迁移等场景中非常常见。本教程将详细解释如何实现这一功能,主要涉及的技术点包括: 1. **读取Excel数据**:...

    asp.net把execl文件导入数据库

    在ASP.NET开发中,将Excel文件导入数据库是一项常见的任务,特别是在数据处理和分析场景下。以下是对这个主题的详细说明: 1. **Excel文件读取**:首先,我们需要使用一个库来读取Excel文件。在.NET框架中,可以...

    演示如何使用 SqlBulkCopy 类加载数据

    下面的控制台应用程序演示如何使用 SqlBulkCopy 类加载数据。在此示例中,使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。 重要说明...

    asp.net导入导出excel表,导入到sql数据库

    在ASP.NET开发中,处理Excel数据的导入与导出是一项常见的任务。这通常涉及到与Excel文件的交互,以及数据在数据库中的存储。本篇将详细阐述如何使用ASP.NET结合DataTable和DataGrid实现Excel数据的导出,以及如何将...

    Asp.net中Excel导入

    在Asp.net开发环境中,Excel数据的导入是一项常见的任务,特别是在需要从电子表格批量导入数据到数据库时。这里我们将深入探讨如何在Asp.net中实现Excel数据的导入,并将其存储到SQL Server 2005数据库中。 首先,...

    C#SqlBulkcopy批量插入数据

    在.NET框架中,C#提供了一个非常强大的工具——SqlBulkCopy类,用于高效地将大量数据从一个数据源批量插入到SQL Server数据库中。相比于传统的单条INSERT INTO语句,SqlBulkCopy在处理大规模数据导入时能显著提高...

    asp.net Excel数据导入到数据库

    在ASP.NET中,将Excel数据导入到数据库是一个常见的任务,特别是在处理大量结构化数据时。以下是一些关于这个主题的关键知识点: 1. **文件读取**:首先,你需要使用一个库来读取Excel文件。在.NET框架中,可以使用...

    asp.net 使用SqlBulkCopy极速插入数据到 SQL Server

    在此贴上我的Demo:SqlBulkCopy.rar 代码如下: using System; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using Microsoft.ApplicationBlocks.Data; namespace ...

    C# 使用SqlBulkCopy类批量复制大数据

    C# 使用SqlBulkCopy类批量复制大数据

    SqlBulkCopy批量插入数据(实例)

    SqlBulkCopy是.NET框架中用于高效批量插入数据到SQL Server数据库的一个强大工具。在SQL Server 2005及后续版本中,它被广泛应用于大数据量的导入操作,以显著提高性能并减少与数据库的交互次数。本实例将探讨如何...

    asp.net Excel导入SQLserver源码

    这是一个常见的需求,特别是在数据迁移、数据处理或数据分析场景中。 在BS(Browser-Server)架构中,用户通过浏览器与服务器进行交互,而服务器端的代码负责处理逻辑和数据操作。在这个案例中,C#源代码是运行在...

Global site tag (gtag.js) - Google Analytics