当前位置:实例文章 » C#开发实例» [文章]C# MySQL 插入大批量数据

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插入大批量数据。

其他信息

其他资源

Top