2

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。ここで何が問題なのですか?

4

1 に答える 1

4

関数dbHasCompletedが常に返されるという事実はTRUE既知の問題のようです。インターネットで人々がこの問題に苦しんでいる場所を見つけたからです。

だから、私は回避策を持ってきました。function の代わりにdbHasCompleted、 conditional statement を使用できますnrow(result) == 0

例えば:

result <- dbSendQuery(conn, query);
repeat {
    chunk <- dbFetch(result, n = 10);
    if(nrow(chunk) == 0){
        break;
    } 
    # Do something with 'chunk';
}
dbClearResult(result);
于 2015-11-16T13:00:23.353 に答える