2009-10-13 8 views

Odpowiedz

3

Istnieje naprawdę dobra biblioteka o nazwie FileHelpers, która jest a) w 100% darmowa, b) w pełni w języku C#, i może z łatwością importować dowolny plik tekstowy - oddzielany przecinkami, oddzielony tabulatorami, o stałej szerokości i tak na.

Nie powinieneś mieć problemu z użyciem tego pliku do załadowania pliku CSV do obiektów w pamięci i przechowywania ich w SQL Server przy użyciu ADO.NET.

W FileHelpers, potrzebujesz najpierw klasy opisującej twoje dane, np. klasa "Klient" (lub cokolwiek, co importujesz).

Następnie można zaimportować plik, używając kodu coś takiego:

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

Gdy masz swoją tablicę klientów, można też po prostu iterację że i zapisać dane (zwykle wewnątrz transakcji) z na przykład procedura składowana lub kwerendy SQL ad hoc:

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

    ts.Complete(); 
} 

lub można przekształcić tablicę klientów do DataTable i używać SqlBulkCopy luzem wstawić, że do bazy danych SQL Server - istnieje wiele opcji!

UPDATE:
Czy masz [DelimitedRecord] lub inny z tych atrybutów na klasy BlackListDevice?

+0

Witam, dziękuję za odpowiedź. Spojrzałem na pomocnika plików. Używam ActiveRecord i NHibernate. Otrzymuję ten błąd Klasa rekordów nie ma rekordów. w tej linii FileHelperEngine engine = new FileHelperEngine (typeof (BlackListDevice)); Jeszcze raz dziękuję za pomoc. –

+0

Tak, moja klasa wygląda to [DelimitedRecord (”„)] [ActiveRecord] public class BlackListDevice : Zidentyfikowane { [Nieruchomości] publicznego wirtualny łańcuch DeviceReference {get; zestaw; } } –

+0

A kiedy pojawi się ten błąd? Podczas kompilacji? podczas pracy? Czy twój plik naprawdę zawiera jakiekolwiek dane i czy zawiera dane pasujące do twojej struktury rekordów? –

0

Naprawiono to, dodając oddzielną klasę do przesyłania plików, działa jak urok za pomocą FileHelper.

Powiązane problemy