SQL Server 数据库 批量插入数据到 SQL Server 数据库的方法

SQL Server 数据库阿木 发布于 9 天前 5 次阅读


批量插入数据到 SQL Server 数据库的方法

在处理大量数据时,批量插入数据到 SQL Server 数据库是一个常见的操作。这不仅能够提高数据插入的效率,还能减少网络传输的压力。本文将围绕如何使用代码编辑模型批量插入数据到 SQL Server 数据库展开讨论,包括使用 T-SQL 语句、ADO.NET 和 Entity Framework 等方法。

1. 使用 T-SQL 语句批量插入数据

T-SQL 是 SQL Server 的扩展 SQL,它提供了丰富的数据操作功能。以下是一个使用 T-SQL 语句批量插入数据的示例。

1.1 准备数据

我们需要准备要插入的数据。以下是一个示例数据表和要插入的数据:

sql

CREATE TABLE Employees (


EmployeeID INT PRIMARY KEY,


Name NVARCHAR(50),


Age INT


);

INSERT INTO Employees (EmployeeID, Name, Age) VALUES


(1, 'Alice', 30),


(2, 'Bob', 25),


(3, 'Charlie', 35);


1.2 使用 T-SQL 批量插入

接下来,我们可以使用以下 T-SQL 语句来批量插入数据:

sql

INSERT INTO Employees (EmployeeID, Name, Age)


SELECT EmployeeID, Name, Age FROM EmployeesTemp;


这里,`EmployeesTemp` 是一个临时表,包含了要插入的数据。

1.3 注意事项

- 在使用 T-SQL 批量插入数据时,应确保目标表的结构与源数据表的结构一致。

- 如果数据量很大,可以考虑使用 `BULK INSERT` 语句来提高插入效率。

2. 使用 ADO.NET 批量插入数据

ADO.NET 是 .NET 框架中用于访问数据库的组件。以下是一个使用 ADO.NET 批量插入数据的示例。

2.1 准备数据

我们需要准备要插入的数据。以下是一个示例数据表和要插入的数据:

sql

CREATE TABLE Employees (


EmployeeID INT PRIMARY KEY,


Name NVARCHAR(50),


Age INT


);

INSERT INTO Employees (EmployeeID, Name, Age) VALUES


(1, 'Alice', 30),


(2, 'Bob', 25),


(3, 'Charlie', 35);


2.2 使用 ADO.NET 批量插入

以下是一个使用 ADO.NET 批量插入数据的示例代码:

csharp

using System;


using System.Data;


using System.Data.SqlClient;

class Program


{


static void Main()


{


string connectionString = "Data Source=your_server;Initial Catalog=your_database;Integrated Security=True";


using (SqlConnection connection = new SqlConnection(connectionString))


{


connection.Open();


using (SqlCommand command = new SqlCommand("INSERT INTO Employees (EmployeeID, Name, Age) VALUES (@EmployeeID, @Name, @Age)", connection))


{


command.Parameters.AddWithValue("@EmployeeID", 1);


command.Parameters.AddWithValue("@Name", "Alice");


command.Parameters.AddWithValue("@Age", 30);

command.ExecuteNonQuery();


}


}


}


}


2.3 注意事项

- 在使用 ADO.NET 批量插入数据时,应确保数据库连接是有效的。

- 可以使用 `SqlCommand` 的 `ExecuteNonQuery` 方法来执行插入操作。

- 如果数据量很大,可以考虑使用 `SqlBulkCopy` 类来提高插入效率。

3. 使用 Entity Framework 批量插入数据

Entity Framework 是一个流行的 ORM(对象关系映射)框架,它可以将数据库表映射到 C 类。以下是一个使用 Entity Framework 批量插入数据的示例。

3.1 准备数据

我们需要准备要插入的数据。以下是一个示例数据表和要插入的数据:

sql

CREATE TABLE Employees (


EmployeeID INT PRIMARY KEY,


Name NVARCHAR(50),


Age INT


);

INSERT INTO Employees (EmployeeID, Name, Age) VALUES


(1, 'Alice', 30),


(2, 'Bob', 25),


(3, 'Charlie', 35);


3.2 使用 Entity Framework 批量插入

以下是一个使用 Entity Framework 批量插入数据的示例代码:

csharp

using System;


using System.Linq;


using System.Data.Entity;

class Program


{


static void Main()


{


using (var context = new MyDbContext())


{


var employees = new[]


{


new Employee { EmployeeID = 1, Name = "Alice", Age = 30 },


new Employee { EmployeeID = 2, Name = "Bob", Age = 25 },


new Employee { EmployeeID = 3, Name = "Charlie", Age = 35 }


};

context.Employees.AddRange(employees);


context.SaveChanges();


}


}


}


这里,`MyDbContext` 是一个继承自 `DbContext` 的类,`Employee` 是一个映射到 `Employees` 表的实体类。

3.3 注意事项

- 在使用 Entity Framework 批量插入数据时,应确保数据库上下文是有效的。

- 可以使用 `AddRange` 方法来添加多个实体,然后使用 `SaveChanges` 方法来保存更改。

- 如果数据量很大,可以考虑使用 `DbContext` 的 `Database.ExecuteSqlCommand` 方法来提高插入效率。

总结

本文介绍了三种批量插入数据到 SQL Server 数据库的方法:使用 T-SQL 语句、ADO.NET 和 Entity Framework。每种方法都有其适用场景和优缺点。在实际应用中,应根据具体需求选择合适的方法。