第一个参数不是开放的 RODBC 通道
First argument is not an open RODBC channel
我正在通过 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
我有所有者权限,我还可以更新 Excel 通过 ODBC 连接到该数据库的电子表格。
如果它有任何用处,这里是 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 服务器数据库。最后我不得不将 Trusted_Connection=TRUE 更改为 Trusted_Connection=Yes...
另一个上下文,但同样的错误:
如果您的数据库的 table 由数字组成,您首先必须加载 class xts:
的对象 (nameofyourtable)
>library(RODBC)
>library(DMwR)
>library(xts)
>data(nameofyourtable)
我正在通过 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
我有所有者权限,我还可以更新 Excel 通过 ODBC 连接到该数据库的电子表格。 如果它有任何用处,这里是 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 服务器数据库。最后我不得不将 Trusted_Connection=TRUE 更改为 Trusted_Connection=Yes...
另一个上下文,但同样的错误: 如果您的数据库的 table 由数字组成,您首先必须加载 class xts:
的对象 (nameofyourtable) >library(RODBC)
>library(DMwR)
>library(xts)
>data(nameofyourtable)