快速插入大量数据的asp.net代码(Sqlserver)

网络编程 2025-03-25 03:15www.168986.cn编程入门

在数据世界的洪流中,我们经常需要将大量数据从一处搬运到另一处。当我们面对的是庞大的数据量,且目标数据库只能是Sqlserver时,如何使用ADO进行高效的数据迁移呢?以下是一个生动的实例。

示例代码如下:

```csharp

using System.Data;

using System.Data.SqlClient;

// 定义连接字符串,指向目标Sqlserver数据库

string connectionString = "Data Source=HG-J3EJJ9LSW5PY;Initial Catalog=Test;User ID=sa;Password=hg";

// 模拟从其他数据库获取的数据,这里仅为示例,实际中需根据实际情况获取

DataTable dataTable = new DataTable();

dataTable.Columns.Add("ColumnA"); // 确保列名与数据库中的对应

for (int i = 0; i < 100000; i++)

{

string passportKey = Guid.NewGuid().ToString(); // 生成唯一标识作为示例数据

DataRow dataRow = dataTable.NewRow();

dataRow["ColumnA"] = passportKey; // 根据数据库表结构填充数据

dataTable.Rows.Add(dataRow);

}

using (SqlConnection sqlConnection = new SqlConnection(connectionString))

{

sqlConnection.Open();

SqlTransaction sqltran = sqlConnection.BeginTransaction(); // 可选:使用事务确保数据完整性

SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.KeepIdentity, sqltran);

sqlBulkCopy.DestinationTableName = "large"; // large为目标Sqlserver数据库中的表名

sqlBulkCopy.BatchSize = dataTable.Rows.Count; // 设置批量提交的大小,提高传输效率

if (dataTable != null && dataTable.Rows.Count != 0)

{

sqlBulkCopy.WriteToServer(dataTable); // 将数据批量写入Sqlserver数据库

}

sqlBulkCopy.Close(); // 关闭SqlBulkCopy对象

if (sqltran != null) sqltranmit(); // 提交事务(如果使用事务的话)

sqlConnection.Close(); // 关闭数据库连接

}

```

注解:

`<2>` `DataTable` 的结构需要与数据库中的表结构相同。如果 `DataTable` 的列少于数据库中的列,数据库中的那些列应有默认值设置。

`<3>` 代码中使用事务作为可选操作,用于确保数据的一致性和完整性。在实际应用中可以根据需求选择是否使用事务。

请注意,实际应用中需要根据实际情况调整代码,确保数据的准确性和完整性。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by