我在从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。
暂无答案!
目前还没有任何答案,快来回答吧!