Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server dbHasCompleted始终返回TRUE_Sql Server_R_Jdbc_Sql Server 2008 R2_Rjdbc - Fatal编程技术网

Sql server dbHasCompleted始终返回TRUE

Sql server dbHasCompleted始终返回TRUE,sql-server,r,jdbc,sql-server-2008-r2,rjdbc,Sql Server,R,Jdbc,Sql Server 2008 R2,Rjdbc,我正在使用R对SQLServer2008R2数据库进行统计分析。我的数据库客户机(又名驱动程序)是JDBC,因此我使用RJDBC包 我的查询非常简单,我确信该查询将返回很多行(大约200万行) 我的R脚本如下 library(RJDBC); javaPackageName <- "com.microsoft.sqlserver.jdbc.SQLServerDriver"; clientJarFile <- "/home/abforce/mystuff/sqljdbc_3.0/enu

我正在使用R对SQLServer2008R2数据库进行统计分析。我的数据库客户机(又名驱动程序)是JDBC,因此我使用RJDBC包

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

我的R脚本如下

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)
库(RJDBC);

javaPackageName函数
dbhasscompleted
总是返回
TRUE
这一事实似乎是一个众所周知的问题,因为我在互联网上发现了其他地方,人们都在为这个问题而挣扎

所以,我来了一个解决办法。我们可以使用条件语句
nrow(result)=0,而不是函数
dbhasscompleted

例如:

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

结果截至2020年2月,这仍然是一个悬而未决的问题:
result <- dbSendQuery(conn, query);
repeat {
    chunk <- dbFetch(result, n = 10);
    if(nrow(chunk) == 0){
        break;
    } 
    # Do something with 'chunk';
}
dbClearResult(result);