dbHasCompleted始终返回TRUE

时间:2015-11-16 12:12:24

标签: sql-server r jdbc sql-server-2008-r2 rjdbc

我使用R对SQL Server 2008 R2数据库进行统计分析。我的数据库客户端(又名驱动程序)是JDBC,因此我使用RJDBC包。

我的查询非常简单,我确信查询会返回很多行(大约200万行)。

PanelBottom

我的R脚本如下。

SELECT * FROM [maindb].[dbo].[users]

在上面的代码中,最后一行始终返回library(RJDBC); javaPackageName <- "com.microsoft.sqlserver.jdbc.SQLServerDriver"; clientJarFile <- "/home/abforce/mystuff/sqljdbc_3.0/enu/sqljdbc4.jar"; driver <- JDBC(javaPackageName, clientJarFile); conn <- dbConnect(driver, "jdbc:sqlserver://192.168.56.101", "username", "password"); query <- "SELECT * FROM [maindb].[dbo].[users]"; result <- dbSendQuery(conn, query); dbHasCompleted(result) 。这可能有什么问题?

1 个答案:

答案 0 :(得分:2)

函数dbHasCompleted始终返回TRUE的事实似乎是一个众所周知的问题,因为我在互联网上找到了其他地方,人们正在努力解决这个问题。

所以,我来了一个解决方法。我们可以使用条件语句dbHasCompleted来代替函数nrow(result) == 0

例如:

result <- dbSendQuery(conn, query);
repeat {
    chunk <- dbFetch(result, n = 10);
    if(nrow(chunk) == 0){
        break;
    } 
    # Do something with 'chunk';
}
dbClearResult(result);