Экспорт SQL в файл CSV с использованием .Net - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть приложение, которое сохраняет набор данных sql в файл csv. Я читаю данные, зацикливаю каждое сохранение строки в строку и затем сохраняю строку в текстовый файл. Проблема в том, что в нем более 25 тыс. Строк, и обработка занимает много времени. Есть ли более быстрый способ сделать это?

SqlDataAdapter sSQL2 = new SqlDataAdapter("SelUsersEmails", Conn);
DataSet RS2 = new DataSet();
sSQL2.Fill(RS2, "SelUsersEmails");


s = "UserID,SignUpDate,Email,PayPalEmail,Firstname,Lastname" + Environment.NewLine;



foreach (DataRow u in RS2.Tables["SelUsersEmails"].Rows)
{//loop each
        s += u["UserID"].ToString() + "," + u["SignUpDate"].ToString() + "," +["Email"].ToString() + "," + u["NetworkEmail"].ToString() + "," + ["Firstname"].ToString() + "," + u["Lastname"].ToString();

        s += Environment.NewLine;

}

Ответы [ 2 ]

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

Есть много вещей, которые можно сделать - вместо конкатенации строк вы можете использовать StringBuilder, чтобы создать его более эффективно.

Другой вариант - потоковая передача данных в файл.по ходу дела - это наиболее эффективный способ памяти, хотя может быть более интенсивным вводом-выводом.

Но я предлагаю использовать FileHelpers для создания файла CSV.Это популярная библиотека, которая гарантирует правильную реализацию CSV (например, что будет с вашим кодом, если поле содержит запятую?).

0 голосов
/ 15 февраля 2012

Почему бы вам не открыть файл, готовый к записи, и записать каждую строку, пока вы просматриваете набор результатов?

Это наиболее эффективный способ создания файла CSV.

...