Невозможно загрузить огромные файлы с помощью локального файла загрузки данных в mysql - PullRequest
0 голосов
/ 10 февраля 2012

Я попытался загрузить огромный файл данных, например, файлы размером 10 МБ, в базу данных, используя Load Data Local Infile, в mysql, используя службу Windows. Но это не удалось, и служба Windows остановилась без каких-либо исключений. Я попытался с файлами небольшого размера, такими как 2 МБ, и это удалось.

Есть ли способ загрузить огромные файлы в базу данных 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 Ответ

1 голос
/ 10 февраля 2012

Я загружаю до 100 МБ файлов в поля MySQL Blob. И это только мой искусственный предел.

Итак, файлы размером 10 МБ не должны быть проблемой.

Правильно ли вы установили max_allowed_packet?

Что вы используете для загрузки файлов? Ваш собственный код или какой-то инструмент? Что такое MySQL Connector?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...