Merhaba arkadaşlar, c# ve Sql Server ile ilgili bir soru sormak istiyorum
Elimde xls formatında 550 adet dosya var ve bu dosyaların her birinde 20.000 kayıt bulunuyor.
ben bu kayıtları mevcut yöntemle veritabanına ekliyorum ama ortalama 1,5 ile 2 saat arasında bir zaman alıyor.
Benim sormak istediğim bunu hızlandırmanın bir yolu varmı, nasıl yapabilirim ?
Büyük miktarda kaydın eklenmesi
8
●245
- 01-02-2018, 11:47:04ercnakar adlı üyeden alıntı: mesajı görüntüle
Nasıl yaptınız hocam, ben bulkinsert kullanıyorum. - 01-02-2018, 11:51:47Kodunuzu optimize yaparak hızlandırabilirsiniz, bunun içide Thread kullanabilirsiz. Muhtemelen .xls dosyalarını tek tek okuyorsunuz. Thread ile paralel okuyabilir, böylece zamandan tasarruf edebilirsiniz.
- 01-02-2018, 11:52:23Benim işlemim biraz farklıydı ama şu mantığı kullanmıştım. C# ile win form üzerinde exceli okutup (excelde bulunan kolonların mssql aktarırken belli bir koşulları vardı tabi) kaydet dediğimde excel içerisindeki tüm kayıtları satır bazında tek tek dönüp mssqle ilgili satıra yazıyordu. Yazdığımda bulk inserte gerek duymadan asycn ile ado yöntemi ile yapmıştım. Sen async gerek duymadan ado ile direkt yapabilirsin. Umarım anlatabilmişimdircostello adlı üyeden alıntı: mesajı görüntüle
- 01-02-2018, 12:19:41async kullandım ama pek verim alamadım, ben delete insert kullanıyorum acaba başka bir yolu var mı ?
xls dosyası günlük olarak güncelleniyor. bir önceki gün verisi ile bir sonraki gün verisi çoğunlukla aynı olmuyor. ve her birinde 20.000 kayıt oluyor. ve bunun gibi 550 tane var. - 01-02-2018, 12:42:30costello adlı üyeden alıntı: mesajı görüntüle
Merhaba,
Bi Yöntem olarak,
Excel sayısı fazla olduğu için, her excel de işlem (edit) yapmak yerine, formata uygun ara tablo oluşturup import et
-programlama ile (c#, php vs ile ara uygulama yapabilinir)
Yöntemlere ilişkin:
İmport esnasında (trigger ile) yada sonrasında t-sql kodları ile bir script oluşturabilirsin
- while ile döngü
- eşlenecek tabloya instert yada update (uygun koşulla)
- (varsa) ara tabloda delete (uygun koşulla)
Tapatalk kullanarak iPhone aracılığıyla gönderildi