【问题标题】:What is the fastest way to insert large amount of CSV data into mysql database using C#?使用 C# 将大量 CSV 数据插入 mysql 数据库的最快方法是什么?
【发布时间】:2017-02-22 11:23:42
【问题描述】:

我正在尝试使用 C# 将 excel 数据透视表中的数据文件插入 mysql。我正在使用 phpmyadmin。我能够使用插入语句插入数据。但是,我发现插入的性能对于我的目的来说非常慢,因为数据文件将包含至少 15000 行,并且此操作将出现很多次。目前我有一个数组列表,其中包含插入前的数据。我在网上阅读,发现我应该使用 Load Data Infile 并将我的数据保存在 CSV 文件中。我的 CSV 文件没有与我的 SQL 表相同数量的列。我不确定如何将地址传递给 CSV 文件,如果其中一行重复,我不希望整个操作失败。如果对我的情况有帮助,我想使用 in file 方法。

我现在得到的错误是:找不到文件(错误代码: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);

            }



        }


    }

【问题讨论】:

  • 我很确定您的问题与现在制定的主题无关。你做了什么尝试?你遇到了什么错误?出示一些您实际上并不希望我们免费为您编写代码的证据。请阅读How to Ask 和minimal reproducible example 并相应地编辑您的问题。
  • 在不过多更改进程的情况下,您应该能够打开连接一次,执行一堆非查询执行,然后关闭连接...我手边没有确切的语法,但这应该会大大加快速度,而无需进行太多重构。
  • 也可以考虑this

标签: c# mysql excel csv


【解决方案1】:

我敢打赌,将整个文件加载到内存中,然后创建一个包含至少 1000 行的“BULK”插入命令。
您可以清理数据以避免重复,然后仅使用您需要的列创建命令。
请记住插入多行,如下所述:

Inserting multiple rows in mysql

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 2022-11-11
    • 2010-09-23
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2013-04-05
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多