在C#.NET中批量插入大量数据到数据库中可以通过以下步骤来实现:
- 连接到数据库
使用ADO.NET提供的数据库连接类,如SqlConnection连接到数据库。可以通过连接字符串指定数据库信息。示例代码如下:
using System.Data.SqlClient; // 导入命名空间
// 连接数据库
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";
SqlConnection connection = new SqlConnection(connectionString);
// 打开数据库连接
connection.Open();
- 创建插入命令
使用SqlCommand创建插入命令,其中SQL语句中的参数使用@符号来表示。示例代码如下:
// 创建插入命令
string insertCommandText = "INSERT INTO MyTable (Column1, Column2) VALUES (@val1, @val2)";
SqlCommand insertCommand = new SqlCommand(insertCommandText, connection);
// 添加参数
insertCommand.Parameters.AddWithValue("@val1", "Value1");
insertCommand.Parameters.AddWithValue("@val2", "Value2");
- 创建DataTable并添加数据
使用DataTable创建表结构,并添加数据。可以使用循环语句或者其他方式添加大量数据。
// 创建表结构
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Column1", typeof(string));
dataTable.Columns.Add("Column2", typeof(string));
// 添加数据
for (int i = 0; i < 1000; i++) {
DataRow row = dataTable.NewRow();
row[0] = "Value1_" + i;
row[1] = "Value2_" + i;
dataTable.Rows.Add(row);
}
- 使用SqlBulkCopy批量插入数据
使用SqlBulkCopy批量插入数据,可以设置批量插入的数据量、超时时间等参数。示例代码如下:
// 使用SqlBulkCopy批量插入数据
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) {
bulkCopy.DestinationTableName = "MyTable";
bulkCopy.BulkCopyTimeout = 600;
bulkCopy.BatchSize = 1000; // 每一批次的数据量
bulkCopy.WriteToServer(dataTable);
}
这样就可以批量插入大量数据到数据库中了。
示例1:使用文件批量导入数据
如果数据量很大,可以考虑将数据保存到文件中,并使用SqlBulkCopy从文件中批量导入数据。
// 创建文件
string filePath = @"C:\data.csv";
if (File.Exists(filePath)) {
File.Delete(filePath);
}
using (var writer = new StreamWriter(filePath)) {
// 添加数据
for (int i = 0; i < 1000000; i++) {
writer.WriteLine($"Value1_{i},Value2_{i}");
}
}
// 导入数据
using (var reader = new StreamReader(filePath)) {
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) {
using (var bulkCopy = new SqlBulkCopy(connection)) {
bulkCopy.DestinationTableName = "MyTable";
bulkCopy.ColumnMappings.Add(0, "Column1");
bulkCopy.ColumnMappings.Add(1, "Column2");
bulkCopy.BatchSize = 10000;
bulkCopy.WriteToServer(csv);
}
}
}
示例2:使用Entity Framework批量插入数据
使用Entity Framework也可以实现批量插入数据的功能。
// 定义要插入的数据
List<MyEntity> data = new List<MyEntity>();
for (int i = 0; i < 1000; i++) {
data.Add(new MyEntity() { Column1 = "Value1_" + i, Column2 = "Value2_" + i });
}
// 批量插入数据
using (var context = new MyDbContext()) {
context.BulkInsert(data);
}
其中,MyEntity是定义要插入的实体类,MyDbContext是继承自DbContext的自定义数据库上下文类,BulkInsert是Entity Framework Plus包中提供的批量插入数据的方法。
以上就是在C#.NET中批量插入大量数据到数据库中的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#.NET中如何批量插入大量数据到数据库中 - Python技术站