Загрузить очень большие CSV-файлы в базу данных s SQL-Server

#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: