r中的oracle连接

时间:2017-06-16 11:02:41

标签: r oracle

大家好我可以使用以下代码通过R连接到oracle没问题:

library(RODBC)

channel <- odbcConnect(dsn = "xxxx", uid = "xxxx", pwd = "xxxx")
odbcGetInfo(channel)## CHECKS CONNECTION TO ORACLE


COMPANIES <- sqlFetch(channel, "COMPANIES")
COMPANIES_EQUIPMENT <-sqlFetch(channel, "COMPANIES_EQUIPMENT")
EQUIPMENT_SENSORS  <-sqlFetch(channel, "EQUIPMENT_SENSORS")


odbcClose(channel) ## CLOSES odbc CONNECTION

当我获取第一个数据表“COMPANIES”时,没问题,但这意味着运行代码只是为了获取这个数据帧,问题是当我运行上面的代码来获取所有3个数据帧时: 公司, COMPANIES_EQUIPMENT, EQUIPMENT_SENSORS 我的R脚本只是挂起,我试图单独运行每个fetch语句,它们都可以工作但是当我一起运行时,我的脚本会挂起任何想法吗?

不确定问题是R,新笔记本电脑还是Oracle,oracle似乎没关系,因为可以连接没有问题,但是是否允许数据限制等...

我使用Oracle Instantclient 11.2将笔记本电脑的Windows 7专业版连接到Oracle,RStudio版本1.0.143

感谢

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用sqlQuery代替sqlFetch

COMPANIES <- sqlQuery(channel, "SELECT * FROM COMPANIES")

您可能需要使用变量名称替换*

我个人使用RJDBC连接到Oracle:

driverClass="oracle.jdbc.OracleDriver"
classPath="<PATH_TO_INSTANTCLIENT>/instantclient_12_1/ojdbc6‌​.jar"
connectPath="jdbc:oracle:thin:@//<HOST>:<PORT>/<DB_NAME>" 
jdbcDriver <- RJDBC::JDBC(driverClass, classPath)
jdbcConnection <- RJDBC::dbConnect(jdbcDriver, connectPath, dbuser, dbpass)