我在使用ROracle检索大量数据时遇到问题(我对Oracle数据库有只读权限) 由于涉及的数据超过> 4演出我无法使用ROracle中的dbGetQuery完美运行。
相反,我尝试使用dbSendQuery + fetch,但似乎无法使用Oracle。 (它与RmySQL包完美配合)
例如:
使用我的Oracle版本:
dbGetQuery(con2, "select * from PRODUCT_COMPONENT_VERSION")
PRODUCT VERSION STATUS
NLSRTL 10.2.0.3.0 Production
Oracle Database 10g Enterprise Edition 10.2.0.3.0 Prod
PL/SQL 10.2.0.3.0 Production
TNS for 32-bit Windows: 10.2.0.3.0 Production
如果我尝试:
query <- "SELECT * FROM BFMXML_SUIVI"
rs <- dbSendQuery(con2, query, bulk_read = 10000L, prefetch = T)
test <- fetch(rs, n = 10)
dim(test)
[1] 1 13
dbGetRowCount(rs)
[1] 1
但我希望得到10行......
然后再次抓取:
test <- fetch(rs, n = 10)
dim(test)
[1] 1 13
dbGetRowCount(rs)
[1] 1
因此,未获取下一行并查看&#39; test&#39;的结果,我可以看到它仅用零填充(这不是正确的+它不是第一行的情况取电话)
您是否看到任何替代方案/解决方案?
答案 0 :(得分:0)
快速的,我应该补充一点,我没有Oracle后端来测试这个:
我更倾向于对res <- dbGetQuery(con, query)
和dbSendQuery()
组合进行一次fetch()
来电。
我记得之前关于r-sig-db列表的讨论,其中有人说使用n = -1
的一些后端“谎言”是关于准备检索的数据量,通常作为固定。但是,这可能是RODBC
。