C# MySQL 插入大批量数据
发布人:shili8
发布时间:2023-07-15 10:05
阅读次数:182
在C#中使用MySQL数据库进行大批量数据插入是一项常见的任务。下面是一个示例代码,演示了如何使用C#和MySQL插入大批量数据,并附有代码注释。
csharp
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace BulkInsertExample
{
class Program
{
static void Main(string[] args)
{
// 数据库连接字符串
string connectionString = server=localhost;user=root;database=test;password=123456;
// 创建一个DataTable来存储要插入的数据
DataTable dataTable = new DataTable();
dataTable.Columns.Add(Name typeof(string));
dataTable.Columns.Add(Age typeof(int));
// 生成一些示例数据
List people = GenerateData(100000);
// 将示例数据添加到DataTable中
foreach (Person person in people)
{
dataTable.Rows.Add(person.Name person.Age);
}
// 使用MySqlBulkCopy进行批量插入
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
using (MySqlTransaction transaction = connection.BeginTransaction())
{
try
{
// 创建一个MySqlBulkCopy对象
using (MySqlBulkCopy bulkCopy = new MySqlBulkCopy(connection transaction))
{
// 设置目标表名
bulkCopy.DestinationTableName = people;
// 设置批量插入的列映射
bulkCopy.ColumnMappings.Add(Name Name);
bulkCopy.ColumnMappings.Add(Age Age);
// 设置批量插入的每次提交的行数
bulkCopy.BatchSize = 1000;
// 将数据写入数据库
bulkCopy.WriteToServer(dataTable);
}
// 提交事务
transaction.Commit();
Console.WriteLine(数据插入成功!);
}
catch (Exception ex)
{
// 回滚事务
transaction.Rollback();
Console.WriteLine(数据插入失败: + ex.Message);
}
}
}
Console.ReadLine();
}
// 生成示例数据的方法
static List GenerateData(int count)
{
List people = new List();
for (int i = 0; i < count; i++)
{
Person person = new Person
{
Name = Person + i
Age = i % 100
};
people.Add(person);
}
return people;
}
}
// 示例数据的模型类
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
在上面的示例代码中,我们首先创建了一个DataTable对象来存储要插入的数据。然后,我们使用GenerateData方法生成了一些示例数据,并将其添加到DataTable中。
接下来,我们使用MySqlBulkCopy对象进行批量插入。我们设置了目标表名和列映射,以及每次提交的行数。然后,我们使用WriteToServer方法将数据写入数据库。
在插入数据之前,我们使用MySqlConnection对象打开了数据库连接,并使用MySqlTransaction对象开始了一个事务。如果插入过程中发生任何错误,我们将回滚事务,否则我们将提交事务。
最后,我们在控制台输出插入结果,并等待用户按下Enter键结束程序。
希望这个示例代码能帮助你理解如何在C#中使用MySQL插入大批量数据。

