dbgetquery java.sql.SQLException:比最大

时间:2015-08-27 19:23:19

标签: r

我正在尝试使用以下

使用RJDBC获取相当大的结果集(大约1-2M记录)
library(RJDBC)
drv <- JDBC("oracle.jdbc.driver.OracleDriver", 
    classPath="../oracle11g/ojdbc6.jar", " ")
con <- dbConnect(drv, "jdbc:oracle:thin:@hostname:1521/servname","user","pswd")
data <- dbGetQuery(con, "select * from largeTable where rownum < xxx")

如果xxx小于32768,则上述工作正常。在32800以上,我得到以下异常

> data <- dbGetQuery(con, "select * from dba_objects where rownum < 32768") 
> dim(data)
  [1] 32767    15

> data <- dbGetQuery(con, "select * from dba_objects where rownum < 32989")
Error in .jcall(rp, "I", "fetch", stride) : 
  java.sql.SQLException: Bigger type length than Maximum

https://cran.r-project.org/web/packages/RJDBC/RJDBC.pdf中,我看到&#34; fetch以数据框的形式检索结果集的内容。如果n为-1,则当前实现首先获取32k行,然后(如果不充分)继续使用512k行的块,并附加它们。&#34;其次是&#34;请注意,某些数据库(如Oracle)不支持超过32767的提取大小。&#34;

很抱歉新手问题,但我不知道如何告诉dbGetQuery仅以32K的块来获取结果集。我相信我的fetch正在消亡,因为它获取了512K记录。

非常感谢任何建议。提前致谢。

0 个答案:

没有答案