大家好我可以使用以下代码通过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
感谢
佰
答案 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)