Получил 400-мегабайтный текстовый файл, разделенный символом «|».Используя форму Windows с C #, я вставляю каждую строку файла .txt в таблицу в моей базе данных SQL-сервера.
Я просто делаю это (сокращено на «...» длякраткость):
while ((line = file.ReadLine()) != null)
{
string[] split = line.Split(new Char[] { '|' });
SqlCommand cmd = new SqlCommand("INSERT INTO NEW_AnnualData VALUES (@YR1984, @YR1985, ..., @YR2012)", myconn);
cmd.Parameters.AddWithValue("@YR1984", split[0]);
cmd.Parameters.AddWithValue("@YR1985", split[1]);
...
cmd.Parameters.AddWithValue("@YR2012", split[28]);
cmd.ExecuteNonQuery();
}
Теперь это работает, но это занимает некоторое время.Я впервые делаю что-либо с огромным количеством данных, поэтому мне нужно убедиться, что А) Я делаю это эффективно, и что Б) мои ожидания не слишком высоки.
Используя SELECT COUNT()
, пока идет цикл, я могу наблюдать, как число увеличивается и увеличивается со временем.Поэтому я использовал часы и некоторую базовую математику, чтобы выяснить скорость, с которой все работает. За 60 секунд было 73881 вставок.Это 1231 вставка в секунду.Вопрос в том, средняя скорость или плохая производительность?Если последнее, что я могу сделать, чтобы улучшить производительность?
Я прочитал кое-что о том, насколько эффективен SSIS для этой цели.Однако мне нужно, чтобы это действие выполнялось нажатием кнопки в форме Windows, а не через SISS.