dbHasCompleted 总是 returns 真
dbHasCompleted always returns TRUE
我正在使用 R 对 SQL Server 2008 R2 数据库进行统计分析。我的数据库客户端(又名驱动程序)是 JDBC,因此我使用的是 RJDBC 包。
我的查询非常简单,我确信该查询会 return 很多行(大约 200 万行)。
SELECT * FROM [maindb].[dbo].[users]
我的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)
在上面的代码中,最后一行总是 returns TRUE
。这里可能有什么问题?
函数 dbHasCompleted
总是返回 TRUE
的事实似乎是一个已知问题,因为我在互联网上的其他地方发现人们正在努力解决这个问题。
所以,我想出了一个解决方法。我们可以使用条件语句 nrow(result) == 0
.
而不是函数 dbHasCompleted
例如:
result <- dbSendQuery(conn, query);
repeat {
chunk <- dbFetch(result, n = 10);
if(nrow(chunk) == 0){
break;
}
# Do something with 'chunk';
}
dbClearResult(result);
我正在使用 R 对 SQL Server 2008 R2 数据库进行统计分析。我的数据库客户端(又名驱动程序)是 JDBC,因此我使用的是 RJDBC 包。
我的查询非常简单,我确信该查询会 return 很多行(大约 200 万行)。
SELECT * FROM [maindb].[dbo].[users]
我的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)
在上面的代码中,最后一行总是 returns TRUE
。这里可能有什么问题?
函数 dbHasCompleted
总是返回 TRUE
的事实似乎是一个已知问题,因为我在互联网上的其他地方发现人们正在努力解决这个问题。
所以,我想出了一个解决方法。我们可以使用条件语句 nrow(result) == 0
.
dbHasCompleted
例如:
result <- dbSendQuery(conn, query);
repeat {
chunk <- dbFetch(result, n = 10);
if(nrow(chunk) == 0){
break;
}
# Do something with 'chunk';
}
dbClearResult(result);