schnell Excel Daten nach SQL-Server 2005 mittels VBA-Makro

05/10/2007 - 12:53 von Volker | Report spam
Hallo,

ich muß für ein kleines Projekt aus verschiedenen Excel-Dateien, Daten
"extrahieren" und zur weiteren Bearbeitung auf einen SQL-Servr 2005
speichern. Das Extrahieren der Daten funktioniert auch prima und muß
nicht diskutiert werden, einzig das Speichern der Daten soll hier
Thema sein.

Bis dato, haben wir die Daten in eine Access-DB (über DAO)
gespeichert, da aber die nachfolgende Bearbeitung der Daten zu
langwierig in Access ist, müssen die Daten nun auf den SQL-Server
2005.

Nur ... wie speichere ich die Daten performant in die SQL-Server-
Datenbank? Bei Access wurden 500.000 - 7.000.000 Datensàtze in einer
Zeit bis 15 Min. weggespeichert. Das ist die Zeit wo ich beim SQL-
Server 2005 auch in etwa hin möchte. Allerdings bin ich nicht so der
ADO-Experte daher mein Code der zwar schon funktioniert aber bestimmt
noch nicht so optimal ist.


Public Sub verbinden()
Dim cnPubs As ADODB.Connection
Dim strSQL As String
Dim timStart As Date
Set cnPubs = New ADODB.Connection
strSQL = "Driver={SQL Native
Client};ServerÛServer;Database=Datenbank;Uid=Benutzer;Pwd=Passwort;"
cnPubs.Open strSQL
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open "Tabelle1", cnPubs, adOpenStatic, adLockBatchOptimistic
timStart = Now
For i = 1 To 6000000
.AddNew
.Fields("F1") = "F1"
.Fields("F2") = "F2"
.Fields("F3") = "F3"
.Fields("F4") = "F4"
.Fields("F5") = i
.Fields("F6") = "Test"
DoEvents
.MoveNext
If i Mod 100000 = 0 Then
.UpdateBatch
Debug.Print i
End If
Next i
.UpdateBatch
Debug.Print "Zeit:" & CStr(DateDiff("s", timStart, Now)) & "s"
.Close
End With
cnPubs.Close
Set rs = Nothing
Set cnPubs = Nothing

End Sub



Gruß
Volker
 

Lesen sie die antworten

#1 Susanne Wenzel
06/10/2007 - 09:52 | Warnen spam
Hallo Volker,
mal schnell einen aus der Hüfte geschossen:

Am Fri, 05 Oct 2007 03:53:15 -0700 schrieb Volker:

[...]

Nur ... wie speichere ich die Daten performant in die SQL-Server-
Datenbank? Bei Access wurden 500.000 - 7.000.000 Datensàtze in einer
Zeit bis 15 Min. weggespeichert. Das ist die Zeit wo ich beim SQL-
Server 2005 auch in etwa hin möchte. Allerdings bin ich nicht so der
ADO-Experte daher mein Code der zwar schon funktioniert aber bestimmt
noch nicht so optimal ist.



hast Du es schon mit DTS versucht (in der Annahme, dass es den auch beim
SQL2005 gibt)?

HTH (aber wie gesagt, ein Schnellschuss)

Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
Office XP, SP3, aktueller Patchstand
Windows 2000, SP4, aktueller Patchstand
KI-TRIPLE 2007

Ähnliche fragen