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博客

以下是C#批量处理数据的方法: 1. 使用SqlBulkCopy类进行批量插入数据到SQL Server数据。 ```csharp using System.Data.SqlClient; // 假设有一个DataTable对象dt,包含要插入的数据 using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "dbo.MyTable"; bulkCopy.WriteToServer(dt); } } ``` 2. 使用OracleBulkCopy类进行批量插入数据到Oracle数据。 ```csharp using Oracle.ManagedDataAccess.Client; // 假设有一个DataTable对象dt,包含要插入的数据 using (OracleConnection connection = new OracleConnection(connectionString)) { connection.Open(); using (OracleBulkCopy bulkCopy = new OracleBulkCopy(connection)) { bulkCopy.DestinationTableName = "MyTable"; bulkCopy.WriteToServer(dt); } } ``` 3. 使用SQLiteBulkCopy类进行批量插入数据到SQLite数据。 ```csharp using System.Data.SQLite; // 假设有一个DataTable对象dt,包含要插入的数据 using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { connection.Open(); using (SQLiteBulkCopy bulkCopy = new SQLiteBulkCopy(connection)) { bulkCopy.DestinationTableName = "MyTable"; bulkCopy.WriteToServer(dt); } } ``` 4. 使用MySqlBulkCopy类进行批量插入数据MySQL数据。 ```csharp using MySql.Data.MySqlClient; // 假设有一个DataTable对象dt,含要插入的数据 using (MySqlConnection connection = new MySqlConnection(connectionString)) { connection.Open(); using (MySqlBulkCopy bulkCopy = new MySqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "MyTable"; bulkCopy.WriteToServer(dt); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值