在Oracle中获取fetch的问题

时间:2014-08-18 13:54:10

标签: sql r plsql oracle10g r-dbi

我在使用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;的结果,我可以看到它仅用零填充(这不是正确的+它不是第一行的情况取电话)

您是否看到任何替代方案/解决方案?

1 个答案:

答案 0 :(得分:0)

快速的,我应该补充一点,我没有Oracle后端来测试这个:

  1. 我更倾向于对res <- dbGetQuery(con, query)dbSendQuery()组合进行一次fetch()来电。

  2. 我记得之前关于r-sig-db列表的讨论,其中有人说使用n = -1的一些后端“谎言”是关于准备检索的数据量,通常作为固定。但是,这可能是RODBC

  3. 的背景