Я пытаюсь вставить файл данных из таблицы сводной таблицы excel в mysql, используя C#. Я использую phpmyadmin. Я смог использовать инструкцию insert для вставки данных. Тем не менее, я считаю, что производительность для вставки чрезвычайно медленна для моих целей, так как файл данных будет содержать не менее 15000 строк, и эта операция будет иметь большое количество вхождений. В настоящее время у меня есть список массивов, который содержит данные перед вставкой. Я читал онлайн и обнаружил, что должен использовать Load Data Infile и иметь свои данные в CSV-файле. У моего CSV-файла нет одинакового количества столбцов, как у моей таблицы SQL. Я не уверен, как передать адрес в CSV-файл, и я не хочу, чтобы вся операция завершилась неудачно, если одна из строк является дубликатом. Я хочу использовать метод in file, если это может помочь в моей ситуации.Каков самый быстрый способ вставки большого количества CSV-данных в базу данных mysql с использованием C#?
Ошибка я получаю сейчас: Файл не найден (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);
}
}
}
Я уверен, что путь ваш вопрос по теме, как это сформулировано в настоящее время. Что вы сделали, чтобы попробовать? Какие ошибки вы столкнулись? Покажите некоторое доказательство, которое вы на самом деле не ожидаете от нас, чтобы писать код для вас бесплатно. Пожалуйста, прочитайте [ask] и [mcve] и соответствующим образом отредактируйте свой вопрос. – davejal
Не изменяя свой процесс слишком много, вы должны иметь возможность открыть соединение один раз, выполнить кучу ненужных исполнений, а затем закрыть соединение ... У меня нет точного синтаксиса, но это должно значительно ускорить процесс без большого количества рефакторинга. – user2366842
Также рассмотрите [это] (http://stackoverflow.com/questions/14330314/bulk-insert-in-mysql) – TaW