vba—使用ms access加速将数据从oracle 11移动到mysql

unftdfkk  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(227)

我在从oracledb下载数据并将其移动到mysql表时遇到了一个小问题。
在甲骨文上我只有阅读权限。我唯一能执行的任务就是选择。在mysql上,我有select/insert/update特权。另外,在mysql结构中更改任何内容都没有问题-我还可以访问mysql root。
每周我都要从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,但我看不出有什么区别。
所有使用的表/querydfs都是链接表或传递querydfs。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题