vba - Access VBA 在两个数据库之间传输数据
问题描述
我想将表的一些记录从一个 Mysql DB 转移到另一个(2 个不同的 IP 地址)。我通过 ODBC 连接了两个数据库,并将这两个表作为我的 Access DB 中的表链接。
currentdb.execute "insert into Table_DB1 (col1,col2,col3) select col1, col2, col3 from Table_DB1 where col3 between #2020/01/01 0:00:00# and #2020/01/02 23:59:59#"
Table_DB1 的 col3 上有一个索引,这个选择只有 60k 条记录。但它要么非常慢,要么 Access 停止响应。在 Access VB 中的 2 个远程 DB 之间传输数据是否有更快的方法?
解决方案
我为源表和目标表创建了 ADODB 连接和记录集,如下所示。传输速度可以接受。
Dim Con_Dest As New ADODB.Connection
Dim Con_Sour As New ADODB.Connection
Dim Rs_Sour As New ADODB.Recordset
Dim Rs_Dest As New ADODB.Recordset
Dim Str_SqlSour As String
Dim Str_SqlDest As String
Dim Str_Sql As String
Con_Sour.Open "dsn=xxx;uid=xxx;pwd=xxx"
Con_Dest.Open "dsn=yyy;uid=yyy;pwd=yyy"
Str_SqlSour = "select * from Table_Source"
Rs_Sour.Open Str_SqlSour, Con_Sour
Rs_Dest.Open "Table_Dest", Con_Dest, adOpenDynamic, adLockOptimistic
Rs_Sour.MoveFirst
Do Until Rs_Sour.EOF
With Rs_Dest
.AddNew
.Fields("AAA").Value = Rs_Sour.Fields("Col1")
.Fields("AAB").Value = Rs_Sour.Fields("Col2")
.....
.Update
End With
Rs_Sour.MoveNext
Loop
推荐阅读
- c# - c#如果第一行没有空格,如何创建新行
- docker - 在 VPS 上使用 docker 运行多个应用的最佳实践
- java - 使用gson java解析和获取嵌套的json对象
- angular - 量角器 Angular 9:browser.waitForAngularEnabled(true); 不工作
- objective-c - NSOutlineView 覆盖透明标题上的行
- c# - WPF,C#,通过COM端口与机器通信时如何控制程序顺序
- ios - 在 iOS 13 通用链接中支持“#”
- r - R dplyr 按超过 2 个变量分组并计算每个第一个变量组内的相对百分比
- javascript - Javascript:导出异步初始化的对象
- laravel - 如何从 eloquent 中的 belongsToMany 关系中获取特定列的最小值