【问题标题】:How do I use a recordset in vba and add it to a SQL select query?如何在 vba 中使用记录集并将其添加到 SQL 选择查询?
【发布时间】:2021-12-29 14:17:56
【问题描述】:

我试图让 VBA 在 netezza 数据库中运行选择查询,然后将结果插入到 Oracle 数据库表中的表中。

到目前为止,这是我的代码:

Sub Netezza_to_Oracle_table()

Dim mcon As ADODB.Connection
Dim mConnectionString As String
Dim mrecset As New ADODB.Recordset
Dim mSqlQry As String

Dim con As ADODB.Connection
Dim ConnectionString As String
Dim recset As New ADODB.Recordset
Dim SqlQry As String

Set mcon = New ADODB.Connection
Set mrecset = New ADODB.Recordset
    
Set con = New ADODB.Connection
Set recset = New ADODB.Recordset
    
mConnectionString = "dsn=NZSQL;servername=servername;port=1234;database=database;User ID=me01;password=password123"
ConnectionString = "GOODSQL.1;User ID=cheese_data;password=password456;Data Source=ORACLE"

mcon.Open mConnectionString

mSqlQry = "SELECT COLUMNS FROM TABLE WHERE ETC "

mrecset.Open mSqlQry, mcon
 
con.Open ConnectionString
    
SqlQry = " INSERT INTO MY_ORACLE_TABLE (SELECT * FROM " & ("mrecset") & " ) "

recset.Open SqlQry, con

recset.Close

mcon.Close
Set mrecset = Nothing 

con.Close
Set recset = Nothing  
  
End Sub

我认为我遇到的问题是从

获取记录集
mrecset.Open mSqlQry, mcon 

进入

SqlQry = " INSERT INTO MY_ORACLE_TABLE (SELECT * FROM " & ("mrecset") & " ) "

因为有一条消息说当它到达时表不存在

recset.Open SqlQry, con, 

如果我将SqlQry 中的 SQL 替换为

select * from MY_ORACLE_TABLE

然后它运行该代码。

我做这一切都是错的,还是我可以添加/更改一些相对简单的东西来让它工作? (或者我可以以某种方式创建一个虚拟临时表并引用它吗?)

谢谢

【问题讨论】:

    标签: sql vba oracle netezza recordset


    【解决方案1】:

    用 VBA 似乎无法做到这一点。我要将netezza 数据集(copyfromrecordset)导出到excel,然后使用sql 加载器将数据导入到oracle 表中。我已经知道如何做到这一点,但希望有一个更流畅、更快(一键式)的解决方案。 我确实设法将数据导出到 excel 并使用循环将数据导入到 oracle 表中,但是通过 70k+ 行花费的时间太长,因此将恢复到 sql 加载器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多