直接從Excel中的活動工作表中將數據導入SQL Server數據庫的最快方法是什麼?什麼是從Excel中的活動工作表導入到SQL Server的最快方法?
我只是循環遍歷行和列,生成一個SQL字符串,打開一個ADODB.Connection並執行SQL,取得了巨大的成功。然而,這個解決方案對於大型數據集來說太慢了。
所以我正在用ADO測試Jet Provider。這絕對是更快的,但它需要保存工作簿,並且我不能要求用戶在從工作簿上傳之前保存工作簿。
如果工作簿已保存,但是如果ActiveWorkbook從未保存,則以下代碼可以工作ActiveWorkbook.Path返回空字符串,代碼失敗。
Sub UploadViaJet()
Dim objADO As New ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set objADO = New ADODB.Connection
objADO.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ActiveWorkbook.Path & _
"\" & ActiveWorkbook.Name & ";" & _
"Extended Properties=Excel 8.0"
strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
"Server=<server>;Database=<database>;" & _
"UID=<UID>;PWD=<PWD>].test_table " & _
"FROM [" & ActiveSheet.Name & "$]"
objADO.Execute strSQL, lngRecsAff, adExecuteNoRecords
End Sub
有沒有更簡單快捷的方法來做到這一點?
爲什麼不使用Windows臨時文件API? – 2009-11-03 03:29:06
這是一個好主意,除了該問題指出不應提示用戶保存該文件。所以,將內容複製到不同的文件並使用Windows Temp File API將是我的選擇。 – 2009-11-03 13:20:32
到目前爲止,我一直在使用ADO分佈式查詢。它對我來說運行良好,但是我的數據量已經增長到很長一段時間,並且有時會超過計算機的內存容量。使用臨時文件似乎是一個很好的解決方案,即使它需要管理臨時文件。謝謝Raj! – Kuyenda 2009-11-16 20:07:36