使用MySqlBulkLoader上载数据集内容:文件名出现问题



我想试试MySqlBulkLoader的性能,因为我使用的Adapter.update((方法大约需要3000万才能运行。我知道你必须通过一个文件才能做到这一点,所以这里是我的代码:

private void button14_Click(object sender, EventArgs e)
{
string fileName = @"C:UsersUtilisateurds.txt";
if (File.Exists(fileName))
{
File.Delete(fileName);
}
using (StreamWriter sw = File.CreateText(fileName))
{
foreach (DataRow row in Globals.ds.Tables[0].Rows)
{
foreach (object item in row.ItemArray)
{
string itemstr = item.ToString();
sw.Write((string)itemstr + "t");
}
sw.WriteLine();
}
}
using (var conn = new MySqlConnection(Globals.connString))
{
conn.Open();
MySqlCommand comm = new MySqlCommand("TRUNCATE Song",conn);
comm.ExecuteNonQuery();
var bl = new MySqlBulkLoader(conn)
{
TableName = Globals.ds.Tables[0].ToString(),
Timeout = 600,
FieldTerminator = "t",
LineTerminator = "n",
FileName = fileName
};
var numberOfInsertedRows = bl.Load();
Console.WriteLine(numberOfInsertedRows);
}
}

文件生成正常。但在var numberOfInsertedRows = bl.Load();行,我在运行时出现以下错误:

MySql.Data.MySqlClient.MySqlException:'无法获取'/var/packages/MariaDB10/target/MySql/disk/C:\Users\Utilisatur\ds.txt'的stat(错误代码:2"没有这样的文件或目录"('

我试着在fileName中放"/"而不是"\",但同样的错误。

我不知道发生了什么事,有人能帮忙吗?

感谢

默认情况下,MySqlBulkLoader服务器的文件系统加载文件。要使用本地文件,请在调用bl.Load()之前设置bl.Local = true;

要启用此功能,您需要在连接字符串中设置AllowLoadLocalInfile = True;看见https://mysqlconnector.net/troubleshooting/load-data-local-infile/

最后,如果切换到MySqlConnector,则可以使用其MySqlBulkCopyAPI直接从DataTable加载数据,而不是先将其保存到本地CSV文件,然后再加载该文件。

最新更新