第一个论点不是一个开放的RODBC频道

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个论点不是一个开放的RODBC频道相关的知识,希望对你有一定的参考价值。

我通过DNS连接到Oracle数据库(在tnsnames.ora上设置名为“database”的连接)。

我能够成功运行以下代码:

con <- DBI::dbConnect(odbc::odbc(), 
                  "database",
                  UID = "user",
                  PWD = "password",
                  trusted_connection = TRUE)

我还能够通过以下方式成功列出数据库中的所有表:

list <- dbListTables(con)
View(list)

但是,当我跑:

results <- sqlQuery(channel = con, query = "select * from myschemaname.table")

我收到错误:

Error in sqlQuery(channel = con, query = "select * from myschemaname.table") : 
          first argument is not an open RODBC channel

我拥有所有者权限,我还能够通过ODBC更新连接到此数据库的Excel Spreadsheets。如果它有用,这是str(con)的输出

str(con)
Formal class 'Oracle' [package ".GlobalEnv"] with 4 slots
  ..@ ptr     :<externalptr> 
  ..@ quote   : chr "\""
  ..@ info    :List of 13
  .. ..$ dbname               : chr ""
  .. ..$ dbms.name            : chr "Oracle"
  .. ..$ db.version           : chr "11.02.0040"
  .. ..$ username             : chr "user"
  .. ..$ host                 : chr ""
  .. ..$ port                 : chr ""
  .. ..$ sourcename           : chr "database"
  .. ..$ servername           : chr "database"
  .. ..$ drivername           : chr "SQORA32.DLL"
  .. ..$ odbc.version         : chr "03.80.0000"
  .. ..$ driver.version       : chr "11.02.0001"
  .. ..$ odbcdriver.version   : chr "03.52"
  .. ..$ supports.transactions: logi TRUE
  .. ..- attr(*, "class")= chr [1:3] "Oracle" "driver_info" "list"
  ..@ encoding: chr ""
答案

您正在使用RODBC::sqlQuery()进行与DBI::dbConnect()相关的连接。要么使用DBI::dbGetQuery()DBI::dbConnect(),要么与RODBC::odbcConnect()建立连接,并使用RODBC::sqlQuery()

另一答案

所以我有这样的东西连接到SQL Server数据库。最后我不得不将Trusted_Connection = TRUE更改为Trusted_Connection = Yes ...

以上是关于第一个论点不是一个开放的RODBC频道的主要内容,如果未能解决你的问题,请参考以下文章

RODBC sqlSave 列类型:如何确定?

RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?

RODBC 连接无效

RODBC sqlQuery as.is 返回错误结果

RODBC-一个sqlQuery()调用中的多个表[重复]

Python 2.7 pyodbc 或 pymssql 与 R RODBC