Ускорение перемещения данных из Oracle 11 в MySQL с помощью MS Access - PullRequest
0 голосов
/ 08 мая 2018

У меня небольшая проблема с загрузкой данных из базы данных Oracle и перемещением их в таблицу MySQL.

В Oracle у меня есть только право на чтение. Единственная задача, которую я мог выполнить, - это Выбрать. На MySQL у меня есть право выбора / вставки / обновления. Кроме того, нет никаких проблем изменить что-либо в структуре mysql - у меня также есть доступ к корню mysql.

Каждую неделю мне приходится загружать огромное количество данных из Oracle и переносить их в MySQL (для дальнейшей обработки). Лучшее (и единственное) решение в моем случае - использовать MS Access.

Мой фрагмент кода vba выглядит следующим образом (код обычно помещается в цикл, где я выполняю несколько вставок, каждая для отдельного бизнес-сайта. Выполнение его в одном запросе иногда не имеет конца).

Public Sub DownloadData()
On Error GoTo ErrorTrans
    DoCmd.SetWarnings False
    Dim strWhere1 As String, strWhere2 As String, strQueryName As String
    Dim qdDaneObrRabE As QueryDef, qdDaneObrRabTmp As QueryDef
    Dim cnADO As ADODB.Connection

    DoCmd.OpenQuery ("qryDaneObrRabCzysc") 'Calling truncate data procedure on mysql table

    Set cnADO = CurrentProject.Connection
    cnADO.CommandTimeout = 300 '5 minut

    Set qdDaneObrRabE = CurrentDb.QueryDefs("qryDaneObrRabE")

    strQueryName = "tmpObroty_" & GenerateHash(8)
    Set qdDaneObrRabTmp = CurrentDb.CreateQueryDef(strQueryName, "select * from table2;") 'this select is just dummy statement, replaced some lines below
    qdDaneObrRabTmp.Connect = qdDaneObrRabE.Connect

    qdDaneObrRabTmp.SQL = Replace(qdDaneObrRabE.SQL, "{WHERE1}", strWhere1)
    qdDaneObrRabTmp.SQL = Replace(qdDaneObrRabTmp.SQL, "{WHERE2}", strWhere2)

    cnADO.Execute "INSERT INTO mysqltable SELECT * FROM " & strQueryName & ";"

    Call QueryDefsCleanUp("tmpObroty_")

    Call MsgBox("Success")
    Set cnADO = Nothing

    Exit Sub
ErrorTrans:
    Call ActivityLog(Environ("USERNAME"), Now, "DownloadData", True, Err.Number, Err.Description)
End Sub

Пожалуйста, дайте мне знать, если выполнение этих типов вставок через ADODB хорошо. Я также проверил DAO, но я не вижу разницы.

Все используемые таблицы / querydefs являются связанными таблицами или сквозными запросами.

...