实践中,数据库中可能有数十亿条记录。查询结果有可能达到千万条。如果用dbGetQuery( ) 一次性取出所有查询结果,内存可能吃不消。但是,如果容许分块处理数据来完成任务,那么下述方法不失为一个好的选择。
library(DBI)
library(RSQLite)
con <- dbConnect(SQLite(), "example1.sqlite")
res <- dbSendQuery(con,
"select carat, cut, color, price from diamonds
where cut = 'Ideal' and color = 'E' ")
while(!dbHasCompleted(res)){
chunk <- dbFetch(res, 800)
cat(nrow(chunk), "records fetched
")
}
dbClearResult(res)
dbDisconnect(con)