0

我在使用 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

因此,没有提取下一行并查看“测试”的结果,我可以看到它只填充了零(这是不对的 + 第一次 fetch 调用不是这种情况)

你看到任何替代/解决方案吗?

4

1 回答 1

0

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

  1. 我更喜欢单个res <- dbGetQuery(con, query)调用而不是dbSendQuery()andfetch()组合。

  2. 我记得之前关于 r-sig-db 列表的讨论,其中指出一些后端“撒谎”关于准备检索的数据量,使用n = -1通常作为修复提供。但是,这可能是在RODBC.

于 2014-08-18T14:26:10.283 回答