• 01-02-2018, 11:43:09
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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 ?
  • 01-02-2018, 11:45:00
    #2
    c# ile exceli okuyup, içerisindeki kolonları mssql deki kolonlara denk gelecek şekilde hızlı bir şekilde kaydedebilirsin. 30.000 adet kaydı yaklaşık 2-7 sn ye aktarabiliyordum ben
  • 01-02-2018, 11:47:04
    #3
    ercnakar adlı üyeden alıntı: mesajı görüntüle
    c# ile exceli okuyup, içerisindeki kolonları mssql deki kolonlara denk gelecek şekilde hızlı bir şekilde kaydedebilirsin. 30.000 adet kaydı yaklaşık 2-7 sn ye aktarabiliyordum ben

    Nasıl yaptınız hocam, ben bulkinsert kullanıyorum.
  • 01-02-2018, 11:51:47
    #4
    Kodunuzu 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:23
    #5
    costello adlı üyeden alıntı: mesajı görüntüle
    Nasıl yaptınız hocam, ben bulkinsert kullanıyorum.
    Benim 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şimdir
  • 01-02-2018, 12:19:41
    #6
    async 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:32:02
    #7
    Üyeliği durduruldu
    Veritabanına Excel dosyalarını import et sonra SQL koduyla istediğin tabloya insert/update edebilirsin. SQL ile yapabilirsin arada yazılım dili kullanmana gerek bile yok.
  • 01-02-2018, 12:42:30
    #8
    costello adlı üyeden alıntı: mesajı görüntüle
    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 ?

    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
  • 01-02-2018, 13:26:18
    #9
    bu çözümleri deneyip bakayım nasıl bir fark olacak.