使用RODBC从Revolution R查询Oracle数据库

使用RODBC从Revolution R查询Oracle数据库,r,rodbc,R,Rodbc,通过DSN使用64位ODBC驱动程序连接到Oracle的winxp64位上的R 64位旋转中出现RODBC错误 library(RODBC) db <- odbcConnect("oraclemiso",uid="epicedf",pwd="…") rslts = sqlQuery(db, "select count(*) from FTRAuction") Error in .Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max

通过DSN使用64位ODBC驱动程序连接到Oracle的winxp64位上的R 64位旋转中出现RODBC错误

library(RODBC)
db <- odbcConnect("oraclemiso",uid="epicedf",pwd="…")
rslts = sqlQuery(db, "select count(*) from FTRAuction")

Error in .Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize,  : 
  negative length vectors are not allowed
库(RODBC)
db错误

Error in .Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize,  : 
  negative length vectors are not allowed
看起来很像32位/64位的移植问题,所以我建议您与两个相关的商业供应商联系,以解决这个问题。我更喜欢通过ODBC提供的直接数据库驱动程序,但没有理由认为它不应该像64位Linux那样工作。

Dirk是对的——RODBC不支持Oracle的64位驱动程序,至少几个月前是这样。你可能运气不好。我们在尝试让R使用以下工具从64位Linux设备访问Oracle数据库时遇到了类似的问题:64位R、RODBC、unixODBC、Oracle Instant Client。我询问了R-sig-db列表,包括软件包作者(Ripley教授)对此的看法,但没有得出结论性的答案。然后我问Revolution他们是否愿意解决这个问题,如果我们向他们购买许可证(每年5位数!),他们说不

我的公司现在正努力将R的使用减少到最适合的领域。我们将使用其他工具(web服务、基于JVM的系统)访问数据库,并仅在必要时与R共享数据


根本的问题是,很少有R的主要用户也使用Oracle。R主要用于学术界(Excel、MySQL)、金融类(Postgres)和更前沿的分析团队。Oracle被那些重视可靠性而不是创新的老企业所使用,这与大多数R公司所追求的恰恰相反。因此,在我看来,这就解释了为什么对Oracle的支持已经消失。

试试
max=0
BelienRows=FALSE
——这对我来说很有效。

BelienRows=FALSE似乎是关键。打开连接时最好使用它:


db顺便说一句,有一个包
ROracle
可以提高对ODBC驱动程序的要求,但我不知道Revolution是否为您移植了它,Revolution 64位版本没有ROracle移植YetCol Rainer!,信不信由你,believeNRows=FALSE成功了,似乎正在Windows XP上进行64位革命64位感谢AllThank这在连接Sybase IQThank时帮助了我这在连接Firebird 2.5时帮助了我
Error in .Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize,  : 
  negative length vectors are not allowed