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)); // 生成一些示例数据 Listpeople = 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插入大批量数据。