Загрузка больших csv файлов в базу данных
Привет,
У меня есть csv-файл, который содержит что угодно от нескольких сотен записей до 50 000 записей, хотя у меня есть процесс работы, время, необходимое для завершения, мучительно медленное, поэтому я искал совет о наилучшем способе выполнения этого требования.
Сценарий заключается в том, что заказ может содержать что угодно до 50 000 кодов, номер заказа отсутствует в данных загрузки, поэтому он не может выполнить массовую вставку (или я не знаю, как это сделать).
CSV-файл имеет только одно поле, например
abcd123
efgh456
Любые советы или ссылки будут оценены по достоинству.
Что я уже пробовал:
Идентификатор заказа передается в контроллер вместе с данными файла. Метод контроллера ниже.
[HttpPost] public ActionResult UploadNewMailingData(int id,HttpPostedFileBase attachmentcsv) { CsvFileDescription csvFileDescription = new CsvFileDescription { SeparatorChar = ',', FirstLineHasColumnNames = true }; CsvContext csvContext = new CsvContext(); StreamReader streamReader = new StreamReader(attachmentcsv.InputStream); IEnumerable<MediaSaleRecord> list = csvContext.Read<MediaSaleRecord>(streamReader, csvFileDescription); MediaSaleRecord mediaSaleRecord = new MediaSaleRecord(); List<MediaSaleRecord> myList = new List<MediaSaleRecord>(); for (int n = 0;n<list.Count();n++) { mediaSaleRecord.CustomerID = list.ElementAt(n).CustomerID; mediaSaleRecord.MediaSaleID = id; myList.Add(mediaSaleRecord); } db.MediaSaleRecords.AddRange(myList); db.SaveChanges(); return Redirect("Index"); }
кредит за вышеприведенный код идет к
Загрузите CSV-файлы (другие файлы, разделенные разделителями) на Sql Server в Asp.Net MVC-сначала используйте код EF[^]
Модель определяется просто и состоит только из:
public class MediaSaleRecord { public int MediaSaleRecordID { get; set; } public int MediaSaleID { get; set; } public string CustomerID { get; set; } } }