1
我想从Excel数据透视表插入一个数据文件到MySQL使用C#。我正在使用phpmyadmin。我能够使用插入语句来插入数据。但是,我发现插入的性能对于我的目的来说非常慢,因为数据文件将包含至少15000行,并且此操作的发生次数很多。目前我有一个数组列表,其中包含插入前的数据。我在网上阅读,发现我应该使用Load Data Infile并将我的数据存入CSV文件。我的CSV文件没有与我的SQL表相同数量的列。我不知道如何将地址传递给CSV文件,如果其中一行是重复的,我不希望整个操作失败。如果它可以帮助我的情况,我想使用in文件方法。什么是使用C#将大量CSV数据插入到mysql数据库的最快方法?
现在我得到的错误是:找不到文件(ERRCODE:22“无效参数”)
这是迄今为止对于试图在文件的方法将我的代码。
OpenFileDialog ofd3 = new OpenFileDialog();
if (ofd3.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo("../../files/");
string hours = ofd3.FileName;
string cmd = "LOAD DATA INFILE '" + hours + "' INTO TABLE timesheet FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'";
mysql_insert_infile(cmd);
}
private void mysql_insert_infile(string query)
{
using (var connection = new MySqlConnection("Server=localhost;Database=projectdash;Uid=root;Pwd=;allow zero datetime=yes;Allow User Variables=True"))
using (var cmd = connection.CreateCommand())
{
connection.Open();
cmd.CommandText = query;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception w)
{
// MessageBox.Show(w.Message);
}
}
}
我敢肯定的方式你的问题是题外话,因为它是现在制定。你做了什么尝试?你遇到什么错误?证明你实际上不希望我们为你免费编写代码。请阅读[问]和[mcve]并相应地编辑您的问题。 – davejal
在不改变你的过程的情况下,你应该能够打开连接一次,执行一堆非查询执行,然后关闭连接......我没有准确的句法,但这应该会显着加快速度没有太多的重构。 – user2366842
也考虑[this](http://stackoverflow.com/questions/14330314/bulk-insert-in-mysql) – TaW