簡體   English   中英

從SQL Server導入數據到Access 2010

[英]Importing data from SQL Server to Access 2010

我正在嘗試從SQL Server數據庫中的一系列表中收集特定數據,並將它們組合在一起,並使用VBA在Access中的單個表中。

我在Access中使用一個查詢創建了一個記錄集,該查詢使用多個UNION ALL語句合並了所有數據。 我最初的方法是使用以下方式遍歷記錄集:

Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String

cnn.Open "Driver={SQL Server};Server=" + SQLServerNameStr + ";Database=" + DBNameStr + ";Trusted_Connection=Yes"

SQL = "SELECT A, B, C FROM TableA UNION ALL SELECT D, E, F FROM TableB UNION ALL ..." // etc., etc., etc.

rs.Open SQL, cnn, adOpenForwardOnly

While Not rs.EOF
    CurrentDB().Execute ("INSERT INTO AccessTable VALUES ('" & rs("FieldA") & "', '" & rs("FieldB") & "', '" & rs("FieldC") &"')")
    rs.MoveNext
Wend

所有這些工作正常,但是,大約20,000條記錄的速度非常慢。 我確信有更好的方法...可能是通過在主查詢中構建INSERT來實現的,但是,當數據源位於與SQL Server的連接以及當前目標的連接中時,我無法全神貫注於如何執行此操作數據庫。

任何建議將不勝感激。

嘗試使用DoCmd.TransferDatabase *從SQL Server視圖傳輸數據,該視圖以您需要的方式查詢數據到Access表中。

DoCmd.TransferDatabase acImport, "ODBC Database", _ 
"Driver={SQL Server};Server=" & SQLServerNameStr & ";Database=" & DBNameStr & _
";Trusted_Connection=Yes", acTable, "SomeSqlServerView", "AccessTable"

希望傳輸數據庫方法可以很好地管理插入並加快導入過程。


*更改了我的答案,因為批量更新不適用於Access 2010作為數據目標。

我沒有使用太多本機表,但我懷疑問題與一次插入一個表有關。

您可能想要嘗試通過SQL插入並一次執行50行左右。

為什么不嘗試執行插入查詢而不是創建記錄集? 看到這個問題: 如何使用VBA將“整個” DAO記錄集插入到表中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM