我正在尝试使用C#将excel透视表中的数据文件插入mysql。我正在使用phpmyadmin。我可以使用insert语句插入数据。但是,我发现插入的性能对于我来说非常慢,因为数据文件将包含至少15000行,并且此操作将有大量的出现。目前我有一个数组列表,其中保存插入前的数据。我在网上阅读,发现我应该使用加载数据填充和我的数据在CSV文件。我的CSV文件的列数与我的SQL表的列数不同。我不知道如何将地址传递给CSV文件,如果其中一行是重复的,我不希望整个操作失败。我想使用文件中的方法,如果它可以帮助我的情况。
我现在得到的错误是:找不到文件(错误代码:22“无效参数”)
这是我到目前为止尝试in-file方法的代码。

       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);

            }



        }


    }

最佳答案

我的打赌是在memmory中加载整个文件,然后创建一个包含至少1000行的“BULK”insert命令。
您可以清理数据以避免重复,然后仅使用所需的列创建命令。
请记住插入多行,如下所述:
Inserting multiple rows in mysql

关于c# - 使用C#将大量CSV数据插入mysql数据库的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42369732/

10-09 21:26
查看更多