• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

sql aktarım hızlandırma

Katılım
2 Ağustos 2017
Mesajlar
14
Excel Vers. ve Dili
2007
Selamlar,
ben for döngüsü içerisinde vba'dan excel'e aktarım gerçekleştiriyorum.
Aslında test amaçlı 100 data üzerinden çalışıp istediğim sonucu kısa bir sürede alıyorum Ama data sayım 5000'e ulaşınca çok ama çok yavaşladı excelde işlemim.
Sanırım insert işlemini for döngüsünün içinde kullandığım için kaç kayıt varsa o kadar kere insert yaptığı için sistem yavaşaldı diyebilrim.
Şİmdi alkımda bşy var bununla ilgili ama fikirlere açığım,
for döngüsü içinde tüm verileri bir datatable'e yükleyip sonrada next'ten hemen sonra tek seferde insert etmeyi düşündüm ama henüz başabilmiş değilim.
Yardımcı olabilecek biri varmıdır?
 
Merhaba,

Örnek xl dosyasını dosya paylaşım sitelerinden (ör. dosya.tc gibi) birine yükleyin, neyi nasıl yaptığınız anlaşılsın ki yanıt alabilesiniz.
 
sonsatir = Cells(Rows.Count, "A").End(3).Row
For i = 2 To sonsatir
V1 = Sheet1.Cells(i, 1)
v2 = Sheet1.Cells(i, 2)
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
strConn = strConn & "UID=" & User & ";PWD=" & Password
cnt.ConnectionString = strConn
s = s & vbLf & "insert into " & tableName & " (ALN1,ALN2) Values ('" & V1 & "','" & v2 & ")
cnt.Open
rst.Open s, cnt
Next
HATALI olduğunu düşündüğüm kısım burası aslında.
 
Merhaba,
şu şekilde dener misiniz?
Kod:
    Set cnt = New ADODB.Connection
    Set rst = New ADODB.Recordset
    strConn = "PROVIDER=SQLOLEDB;"
    strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
    strConn = strConn & "UID=" & User & ";PWD=" & Password
    cnt.ConnectionString = strConn
    cnt.Open
    sonsatir = Cells(Rows.Count, "A").End(3).Row
    For i = 2 To sonsatir
    V1 = Sheet1.Cells(i, 1)
    v2 = Sheet1.Cells(i, 2)
    
    s = "insert into " & TableName & " (ALN1,ALN2) Values ('" & V1 & "','" & v2 & ")"
    cnt.Execute (s)
    Next
 
NO, sonuç değişmiyor.dün gece test ettim 5000 datayı 1 sa 45dk attı.(yaklaşık)
aslında merak diyorum 5000 data for içerisine alınmadan nasıl insert edebilirki?
 
Merhaba,
çok uzun bir süre bu. Kodla ilgisinin olduğunu sanmıyorum.
 
Bir de "transaction" başlatarak deneyin.
Connection' da "begintrans" ile başlatılır. For döngüsünden çıkınca connection içinde "committrans" ile sonlandırın.

Not: Tablolarda "trigger" varsa, yavaşlamanın en önemli sebebi budur.

.
 
Geri
Üst