无法使用Load Data将本地加载到mysql中加载大文件

时间:2012-02-10 17:37:51

标签: mysql load

我尝试使用Windows服务将大数据文件(例如10 MB文件)加载到db中,使用Load Data Local Infile进入mysql。但它失败了,Windows服务没有任何异常就停止了。我尝试使用小尺寸的文件,例如2 mb,并且它成功了。

有什么办法可以将大量文件加载到mysql数据库中吗? Windows服务停止的原因可能是什么?

这是我的代码..

    public int UpdateDataBase(string query, string filename, Logger swLog)
    {
        int status = 0;

        using (MySqlConnection myconnection = new MySqlConnection(connectionCdrBank))
        {

            try
            {
                myconnection.ConnectionTimeout = 1000;
                myconnection.Open();
                myconnection.BeginTransaction();

                MySqlCommand mycommand = new MySqlCommand("ClearTempTable", myconnection);
                mycommand.CommandType = CommandType.StoredProcedure;
                status = mycommand.ExecuteNonQuery();

                MySqlCommand mycommand1 = new MySqlCommand(query, myconnection);
                mycommand1.CommandTimeout = 1000;
                status = mycommand1.ExecuteNonQuery();

                MySqlCommand mycommand2 = new MySqlCommand("InsertToCdrDetailsTempTable", myconnection);
                mycommand2.CommandType = CommandType.StoredProcedure;
                mycommand2.CommandTimeout = 1000;
                status = Convert.ToInt32(mycommand2.ExecuteScalar());

                myconnection.Commit();
                myconnection.Close();

            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.Message);
                if (myconnection.State == ConnectionState.Open)
                    myconnection.Rollback();
                status = (ex.Message.IndexOf("Duplicate entry") != -1) ? -1000 : 0;
                swLog.WriteErrorToLog("");
                swLog.WriteErrorToLog("Error while saving: " + ex.Message);
                mail.SentMail("Error while saving:", ex.Message);
                swLog.CloseLogger();
            }
        }

        return status;
    }

其中查询

LOAD DATA LOCAL INFILE 'a.txt' INTO TABLE tbl_cdrload" FIELDS TERMINATED BY ',' LINES     TERMINATED BY '\n';

1 个答案:

答案 0 :(得分:1)

我正在将最多100 MB的文件加载到MySQL Blob字段中。这只是我的人为限制。

因此,10MB文件应该不是问题。

您是否正确设置了max_allowed_pa​​cket?

你用什么来加载文件?你自己的代码还是一些工具?什么MySQL连接器?