Доступ к VBA Передача данных между двумя базами данных - PullRequest
1 голос
/ 22 января 2020

Я хотел бы перенести некоторые записи таблицы из одной базы данных Mysql в другую (2 разных IP-адреса). У меня есть обе базы данных, подключенные через ODB C, и две таблицы в виде ссылки на таблицу в моей базе данных Access.

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#"

Существует индекс col3 таблицы Table_DB1 и только 60 тыс. Записей этого выбора. Но это либо очень медленно, либо Access перестает отвечать. Есть ли более быстрый способ передачи данных между двумя удаленными БД в Access VB?

1 Ответ

1 голос
/ 24 января 2020

Я создал соединение 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
...