Sen ölçüde bir dizi ile çalışarak ve que inşa etmek için bir tampon kullanarak performansı artırabilir ry. 10000 satırlık bir sorgu oluşturmak için yalnızca birkaç milisaniye gerekir. Sana SQL Server Excel veri verebilirsiniz bir Excel Add-In oluşturduk
Sub build_query()
Dim buffer As String, length&, data(), r&, c&
' load the data in an array '
data = Range("A2:C5")
' create the string buffer '
buffer = String$(2048, vbNullChar)
' write the header '
Append buffer, length, "INSERT INTO [MyTable] ('ColA', 'ColB', 'ColB') Values(" & vbCrLf
' iterate each cell '
For r = 1 To UBound(data)
Append buffer, length, "("
For c = 1 To UBound(data, 2)
If c > 1 Then Append buffer, length, ","
' convert each type '
Select Case VarType(data(r, c))
Case vbDate:
Append buffer, length, format(data(r, c), "'yyyy-mm-dd HH:nn:ss'")
Case vbString:
Append buffer, length, "'" & data(r, c) & "'"
Case Else:
Append buffer, length, CStr(data(r, c))
End Select
Next
Append buffer, length, ")," & vbCrLf
Next
' write the footer '
length = length - 3 ' remove comma '
Append buffer, length, ");"
' display the result '
Debug.Print Left$(buffer, length)
End Sub
Private Sub Append(buffer$, length&, text$)
length = length + Len(text)
If length > Len(buffer) Then
buffer = buffer & String$(Len(buffer) * (length \ Len(buffer)), vbNullChar)
End If
Mid$(buffer, length - Len(text) + 1) = text
End Sub
indirebilirsiniz Yani bir VBA tabanlı bir çözüm olup T-SQL arıyorsun? Döngünün içinden geçtiğiniz süreçleri gösteren örnek kod sağlayabilir misiniz? Verimliliği toplayan ilk yer burası olurdu. – Jeeped
Çalıştıktan sonra yapacağım. Sadece bir csv dosyasını sadece vba veya daha hızlı olacak bir şeyi kullanarak sql'ye dışa aktarmanın bir yolu olup olmadığını düşünüyordum. –
Verme işleminin sql sunucusuna dışa aktarılmasını ayırın. Ağ yükünü en iyi duruma getirmek için, saklanan proc oluşturabilirsiniz, böylece sadece değerler iletilir. – teenboy