我想使用R包odbc连接到oracle数据库。
下面的代码给出了一个错误:
host <- 'something'
port <- 1523
svc <- "this"
pass <- '***'
user <- 'me'
con <- odbc::dbConnect(DBI::dbDriver("Oracle"),
UID=user,
PWD=pass,
dbname = svc)
ORA-01017: invalid username/password; logon denied
完整版本也是如此:
connect.string <- paste(
"(DESCRIPTION=",
"(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
"(CONNECT_DATA=(SERVICE_NAME=", svc, ")))", sep = "")
con <- odbc::dbConnect(DBI::dbDriver("Oracle"),
UID=user,
PWD=pass,
dbname = connect.string)
ORA-01017: invalid username/password; logon denied
下面是来自dbDriver的信息:
DBI::dbDriver("Oracle")
Driver name: Oracle (OCI)
Driver version: 1.3-1
Client version: 12.2.0.1.0
Connections processed: 0
Open connections: 0
Interruptible: FALSE
Unicode data as utf8: TRUE
Oracle type attributes: FALSE
但是当我使用RODBC处理相同的信息时,一切都很好:
connect.string2 <- paste0("Driver={Oracle in OraClient12Home1};Dbq=",svc,";Uid=",user,";Pwd=",pass,";")
con <-RODBC::odbcDriverConnect(connect.string2)
RODBC::sqlTables(con, tableType = "TABLE") # looks perfect
我真的很想继续使用odbc,因为我有一个包是建立在它之上的(连接到几个不同的数据库,odbc到目前为止一直工作得很好)。为什么这次它不工作了?
1条答案
按热度按时间kmynzznz1#
我不知道为什么独立参数方法不起作用,但是你也可以把连接字符串和
DBI
/odbc
一起使用。或者,您可以将完整的连接字符串作为.connection_string参数传递。连接字符串参考是一个有用的资源,其中包含各种数据库的连接字符串示例。
由此,我猜想你可以做到: