C#中使用Mysql批量新增数据 MySqlBulkCopy

在C#中使用MySqlBulkCopy类来批量复制数据到MySQL数据库,首先需要确保你的项目中已经引用了MySQL Connector。以下是使用MySqlBulkCopy的基本步骤:
1.安装MySQL Connector。
可以通过NuGet安装MySQL Connector

2.在代码中引用必要的命名空间。

using MySqlConnector;

3.连接串未添加AllowLoadLocalInfile=true

4.创建MySqlConnection对象并打开连接到目标MySQL数据库。
5.创建MySqlBulkCopy对象并设置相关属性。
6.使用WriteToServer方法将数据从DataTable或DbDataReader批量复制到数据库中。
 

示例代码:

public bool SqlBulkAdd(DataTable dt, string tableName)
{        
using (MySqlConnection connection = new MySqlConnection(ConnectionString))
                        {
                            try
                            {
                                connection.Open();
                                MySqlBulkCopy bulkCopy = new MySqlBulkCopy(connection);// 创建MySqlBulkCopy对象
                                bulkCopy.DestinationTableName = tableName; // 目标表名
                                bulkCopy.ColumnMappings.AddRange(GetMySqlColumnMapping(dt));

                                MySqlBulkCopyResult result = bulkCopy.WriteToServer(dt); // dataTable是包含要复制数据的DataTable


                                Logger.Instance.DoSomesting = "  数据库访问";
                                Logger.Instance.Info("批处理数据导入:成功,MySqlBulkCopy");
                                return isSucess;
                            }
                            catch (Exception ex)
                            {
                                isSucess = false;
                                Logger.Instance.DoSomesting = "  数据库访问";
                                Logger.Instance.Info("批处理数据导入:异常,MySqlBulkCopy," + ex.Message);

                                return isSucess;
                                //throw ex;
                            }
                            finally
                            {
                                connection.Close();
                            }
                        }
}




        private List<MySqlBulkCopyColumnMapping> GetMySqlColumnMapping(DataTable dataTable)
        {
            List<MySqlBulkCopyColumnMapping> colMappings = new List<MySqlBulkCopyColumnMapping>();
            int i = 0;
            foreach (DataColumn col in dataTable.Columns)
            {
                colMappings.Add(new MySqlBulkCopyColumnMapping(i, col.ColumnName));
                i++;
            }
            return colMappings;
        }





异常,To use MySqlBulkLoader.Local=true, set AllowLoadLocalInfile=true in the connection string. See https://fl.vu/mysql-load-data

解决方法:

数据库连接字符串要加上”AllowLoadLocalInfile=true“,如下:

const string ConnectionString = "server=localhost;port=3306;user=root;password=123456;database=mysql;SslMode = none;AllowLoadLocalInfile=true";

异常,Loading local data is disabled; this must be enabled on both the client and server sides 
 

解决方法

mysql数据库开启允许本地导入数据的配置,命令如下:

SET GLOBAL local_infile=1;//1表示开启,0表示关闭

解决方法:
你需要启用MySQL服务器的local_infile功能。这可以通过设置my.cnf(或my.ini在Windows上)配置文件中的local_infile选项来实现。
在[mysqld]部分添加或者修改以下行:

[mysqld]
local_infile=1

net stop mysql80

net start mysql80

MySQL数据库的数据文件保存在哪?MySQL数据存在哪里_mysql数据库文件存放位置-CSDN博客

【已验证】MySQL数据库文件的存放路径及目录_mysql数据库路径-CSDN博客

猜你喜欢

转载自blog.csdn.net/zgscwxd/article/details/139497315