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

标签 r database oracle rodbc roracle

我正在尝试将 R 连接到数据库(我只是想指出,我没有任何数据库经验,这就是为什么我希望你能给我一些提示)。起初,我使用 this post 中的代码尝试了 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

有人可以解释一下如何将其连接到数据库并检查连接吗? 实际上我对这一切过程感到非常困惑,我试图自己找到解决方案,甚至在 stackoverflow 上,但我根本不理解它。提前致谢

最佳答案

尝试使用此示例

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

关于r - 将 R 连接到 Oracle 数据库/服务器(ROracle、RODBC...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35288695/

相关文章:

ruby-on-rails - 为什么我的 Rails 数据库迁移没有创建列?

oracle - 获取 LONG RAW 的长度

java - java测试中调用存储过程后可以回滚吗?

r - 在ggplot2中定位水平箱线图

r - sparklyr 我可以将格式和路径选项传递给 spark_write_table 吗?还是将 saveAsTable 与 spark_write_orc 一起使用?

R Shiny : Is there a way to check if a button is disabled using shinyjs package?

Oracle pl/sql ORA-02204 错误

r - 将每 "X"列粘贴到数据框中的单个列

ruby-on-rails - Rails 网络应用程序 : do you create a separate database per account opened?

c++ - 将 Raspberry Pi 2 连接到外部远程数据库