#c# #.net #sql-server #csv
#c# #.net #sql-сервер #csv
Вопрос:
Есть ли эффективный способ загрузить очень большие CSV-файлы (размером в несколько гигабайт) в базу данных SQL-Server 2008 с помощью .NET?
Ответ №1:
Я бы объединил этот CSV-ридер с SqlBulkCopy
; т.е.
using (var file = new StreamReader(path))
using (var csv = new CsvReader(file, true)) // true = has header row
using (var bcp = new SqlBulkCopy(connection)) {
bcp.DestinationTableName = "TableName";
bcp.WriteToServer(csv);
}
Для выполнения вставок используется API массового копирования, при этом используется полностью управляемая (и быстрая) IDataReader
реализация (что особенно важно, которая передает данные, а не загружает их все сразу).
Ответ №2:
Посмотрите на использование класса SqlBulkCopy.
Ответ №3:
Используйте SqlBulkCopy http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx