Mysql批量数据添加,数据库连接字符串要加AllowLoadLocalInfile=true;并且还要在数据库服务端设置参数 local_infile = ON,可以要数据库管理后台中设置或是执行登录MySQL,执行命令:
SET GLOBAL local_infile = 1;
SHOW VARIABLES LIKE 'local_infile'; -- 确认变成 ON
local_infile 否 OFF ON [ON | OFF]
public void BulkCopy(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
return;
// 正确拼接连接字符串
string finalConnStr = ConnStr.TrimEnd(';') + ";AllowLoadLocalInfile=true;";
using (MySqlConnection conn = new MySqlConnection(finalConnStr))
{
conn.Open();
// 强制开启 local_infile(解决你报错的关键)
using (MySqlCommand cmd = new MySqlCommand("SET SESSION local_infile = 1;", conn))
{
cmd.ExecuteNonQuery();
}
// MySqlBulkCopy 不能用 using!直接创建即可
MySqlBulkCopy bulkCopy = new MySqlBulkCopy(conn);
bulkCopy.DestinationTableName = TableName;
bulkCopy.WriteToServer(dt);
}
}