> Potrebno je ukoliko zapis postoji u bazi da se ne upise,
Pretpostavljam da imaš neka jedinstvena polja u toj tabeli, ako nisu već deo primarnog ključa, postavi unique indeks nad njima i pokušaj upis, dobićeš exception.
> a takodje ukloliko postoji zapis,a doda se jedna ili vise kolona u fajlu updatovati u bazu i dodati kolone nove,
Izmenu strukture tabele moraš raditi pre svih drugih operacija, za to se koriste DDL komande ALTER TABLE ADD <defincija polja>, vodi računa da to radiš dok niko drugi nije nakačen na bazu, da radiš u posebnoj transakciji i da pošto je commituješ, rekonektuješ vezu sa bazom (disconnect i connect na database komponenti).
> takodje ako dodje do izmene u csv fajlu treba updatovati taj zapis E sad moj problem je kako porediti svaki sa svakim zapisom iz fajla i iz baze?
> A da to radi maksimalno brzo? Mogao bi preko neke for ili while petlje ali mislim da je to sporo....Ima li mi pomoci?
Da li ti imaš neki flag u csv fajlu koji kaže da je zapis promenjen? Ako ne onda ćeš morati da upoređuješ sva polja tog zapisa iz baze sa onime u fajlu, to jednostavno mora biti sporo.
Ako u csv falju slogovi imaju IDeve koji idu u nekom opsegu onda možeš učitati samo slogove iz tabele koji pripadaju tom opsegu i tako ubrzati stvar. Ako ne imaš nekoliko mogućnosti:
a) ako csv uvek sadrži sve slogove kao i fajl u bazi onda možeš probati da uradiš drop tabele i da ponovo sve importuješ.
b) učitaš sve slogove iz baze i sve slogove iz csva i upoređuješ, eventualno možeš probati sa kbmMemTable komponentama da olakšaš nešto od toga.
c) ubaciš sve slogove iz csva u neku tmp tabelu i onda serijom upita i joinova upoređuješ šta se sve razlikuje i to menjaš, ovo je najbrže uraditi preko stored procedure.
d) ako možeš uticati na generisanje csv fajla, dodaj flag polje koje će ti kazivati da li je slog nov ili izmenjen.