ADO import z CSV (pytanie teoretyczne).

0

Witam.
Mam za zadanie dodać do mojej bazy danych wiersze z pliku csv przy okazji dbając o to żeby się nie powtarzały. I w związku z tym mam jedno pytanie. Czym to najlepiej zrobić (nie znam dokładnie ADO i nie wiem jakie ma możliwości). Z tego co wiem DataSet są złe bo muszą być wczytane do pamięci (przy dużym projekcie to nie wypali), jedynym wyjściem jest wrzucanie każdego wiersza INSERT'em, czy też ADO dostarcza jakiś inny elegancki sposób na dodawanie wierszy?

Pozdrawiam
Ananasowy

0

Do importu większych porcji danych służy klasa SqlBulkCopy. Szybciej po prostu nie będzie.

0
SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "Tabela";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close(); 

Rozumiem że chodzi o coś takiego jeszcze jestem ciekaw czy ta klasa dostarcza jakąś metodę do sprawdzania czy wrzucany wiersz nie ma identycznego odpowiednika w bazie.

0

Rozumiem że chodzi o coś takiego jeszcze jestem ciekaw czy ta klasa dostarcza jakąś metodę do sprawdzania czy wrzucany wiersz nie ma identycznego odpowiednika w bazie.

To zależy co rozumiesz przez "identyczny wiersz" w bazie. Powinieneś określić sobie jakiś PK w tabeli.

0

No tak, tworzę pole po którym będę identyfikował wiersze. Jestem ciekaw czy można to zrobić sprytniej niż zwykłem selectem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1