Лучший метод для импорта csv или файла Excel к SQL Server использование 2005 года представления .net MVC

О каком размере кода мы говорим? Если у Вас только есть 10-20 классов, Вам, вероятно, не нужно к (и не был должен) сверхорганизовывать Ваш код в пакеты только ради него.

, Поскольку Ваш проект растет, первое различие, которое Вы хотите сделать, состоит в том, чтобы разделить код пользовательского интерфейса от базовой модели данных и логики. Чисто разделение слоев крайне важно, чтобы быть в состоянии сделать надлежащее поблочное тестирование.

, Если Вы испытываете затруднения избавиться от круговых зависимостей, они, вероятно, имеют место, классы являются на самом деле взаимозависимыми, и должны находиться в том же пакете.

Разбирание в уровнях абстракции является, вероятно, одним из самых важных аспектов при разработке полной структуры кода.

5
задан 13 October 2009 в 10:29
поделиться

2 ответа

There's a really good library called FileHelpers which is a) 100% free, b) fully in C#, and it can easily import any kind of text-based file - comma-separated, tab-separated, fixed width and so on.

You should have no trouble using this to load your CSV file into in-memory objects and storing those in SQL Server using ADO.NET.

In FileHelpers, you first need to have a class that describes your data, e.g. a "Customer" class (or whatever it is you're importing).

Then, you can import a file using code something like this:

FileHelperEngine<Customer> engine = new FileHelperEngine<Customer>();
Customer[] dataLoaded = engine.ReadFile(fileName);

Once you have your array of customers, you can either just iterate through that and save the data (typically inside a transaction) with e.g. a stored procedure or a ad-hoc SQL query:

using(TransactionScope ts = new TransactionScope())
{
   foreach(Customer c in dataLoadad)
   {
      SaveCustomer(c);
   }

   ts.Complete();
}

or you could convert the customer array to a DataTable and use SqlBulkCopy to bulk insert that into your SQL Server database - there are lots of options!

UPDATE:
Do you have a [DelimitedRecord] or another of those attributes on your BlackListDevice class?

3
ответ дан 15 December 2019 в 06:29
поделиться

Исправлено путем добавления отдельного класса для загрузки файлов, работает как шарм с использованием FileHelper.

0
ответ дан 15 December 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: