【问题标题】:dbHasCompleted always returns TRUEdbHasCompleted 始终返回 TRUE
【发布时间】:2015-11-16 12:12:24
【问题描述】:

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

我的查询非常简单,我确信该查询会返回很多行(大约 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)

在上面的代码中,最后一行总是返回TRUE。这里有什么问题?

【问题讨论】:

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


    【解决方案1】:

    函数 dbHasCompleted 总是返回 TRUE 的事实似乎是一个已知问题,因为我在 Internet 上的其他地方发现人们正在努力解决这个问题。

    所以,我想出了一个解决方法。代替函数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);
    

    【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多