【问题标题】:Access VBA Transfer data between two databaseAccess VBA 在两个数据库之间传输数据
【发布时间】:2020-01-22 02:43:31
【问题描述】:

我想将一个表的一些记录从一个 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 之间传输数据有更快的方法吗?

【问题讨论】:

  • 使用 LOAD DATA LOCAL INFILE ... 技术将源数据复制到 CSV 扩展,复制到目标服务器并使用 CSV 数据作为 2 个远程目标 MySQL DB 的输入。
  • 感谢您的建议,但我们无权在源服务器上保存任何内容
  • 将您的源数据转换为本地 PC 上的 CSV 扩展,然后使用完全路径化的本地 CSV 数据作为 2 个远程目标 MySQL DB 的输入,使用 LOAD DATA LOCAL INFILE ..... 技术。这个概念可能对你有用。

标签: vba ms-access transfer


【解决方案1】:

我为源表和目标表创建了 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

【讨论】:

    最近更新 更多