将R连接到Oracle数据库/服务器(ROracle,RODBC..)



我正在尝试将R连接到数据库(我只是想指出,我对数据库没有任何经验,这就是为什么我希望你能给我一些提示(。起初,我使用这篇文章中的代码尝试了 ROracle 包:

library(ROracle)
host <- "xxx.xxx.xx.xxx"
port <- 1521
service <- "K" #? not sure exactly what does it mean service, is it name of server?i cannot really find any informations about it
drv <- dbDriver("Oracle")
connect.string <- paste(
  "(DESCRIPTION=",
  "(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
  "(CONNECT_DATA=(SERVICE_NAME=", service, ")))", sep = "")
con <- dbConnect(drv, username = "user", password = "pwd", dbname = connect.string)

我没有收到任何错误消息,但是当我使用命令时

dbGetInfo(con)

我得到了以下回复:

$username
[1] "user"
$dbname
[1] "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx.xxx.xx.xxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=K)))"
$serverVersion
[1] "xx.x.x.x.x"
$serverType
[1] "Oracle RDBMS"
$resTotal
[1] 0
$resOpen
[1] 0
$prefetch
[1] FALSE
$bulk_read
[1] 1000
$bulk_write
[1] 1000
$stmt_cache
[1] 0
$results
list()

在查看有关 ROracle 的文档时,我发现:

$resTotal 此连接上的结果集数

$resOpen 此连接上打开的结果集数

在我的情况下两者都等于 0,这是否意味着我已连接?我只是无法弄清楚如何检查我是否已连接到数据库/服务器。

然后我决定查看软件包RODBC

library(RODBC)
ch <- odbcConnect("K",uid="user", pwd = "pwd") # again question what is the first parameter? should it be server name?
odbcGetInfo(ch)

结果更糟的是出现错误:

Warnmeldungen:
1: In odbcDriverConnect("DSN=K;UID=user;PWD=pwd") :
  [RODBC] FEHLER: Status IM002, Code 0, Nachricht [unixODBC][Driver Manager]Data source name not found, and no default driver specified
2: In odbcDriverConnect("DSN=K;UID=user;PWD=pwd") :
  ODBC-Verbindung fehlgeschlagen
> 
> odbcGetInfo(ch)
Fehler in odbcGetInfo(ch) : Argument ist kein offener RODBC-Kanal

谁能解释一下我如何将其连接到数据库并检查连接?我实际上对整个过程感到非常困惑,即使在堆栈溢出上,我也试图自己找到解决方案,但我根本不明白。提前致谢

尝试使用此示例

require(Roracle)
Con=dbConnect(dbDriver("Oracle"),"IP/SID",username="xxx",password="xxx")
Q=dbSendQuery(Con,"Select ….")
F=fetch(Q)
head(F)

尝试使用 RJdbc

注意:安装 RJdbc 和 rjava 软件包。

library(RJDBC)
driver <- JDBC("oracle.jdbc.OracleDriver",
            classPath="C:/app/../product/12.1.0/client_1/jdbc/lib/ojdbc7.jar"," ")
connection <-dbConnect(driver,"jdbc:oracle:thin:@host:port:SID","USERNAME","PASSWORD")
results <- dbGetQuery(connection, "SELECT COUNT(*) FROM TABLENAME")
print(results)
dbDisconnect(connection)

相关内容

  • 没有找到相关文章

最新更新