2015-02-07 40 views
1

如果我运行中的R工作室下面的代码,然后它的工作原理,但我已经设置sys.sleep。我有一大批的查询运行,我不知道每个会花多长时间。如果我排除sys.sleep,则导出在查询完成之前运行导出时为空。有没有让R等待查询完成的方法?[R动态sql查询到.csv

#setup 
    #install.packages("stringr", dependencies=TRUE) 
    require(stringr) 
    library(RODBC)  

#odbc connection 
    db <- odbcDriverConnect("dsn=DW Master;uid=username;pwd=password;") 

#sql to be run 
    qstr <- "select top 10 * from prod" 

#variable 
    weeknum<-c('201401','201402','201403') 

for (i in weeknum) 
    { 
    data <- sqlQuery(db, qstr, believeNRows = FALSE) 
    Sys.sleep(10) 
    filename<-paste("data_", str_trim(i), ".csv") 
    filename 
    write.csv(data, file = filename) 
    } 

回答

0

从这个SO post,尝试添加rows_at_time说法:

data <- sqlQuery(db, qstr, believeNRows = FALSE, rows_at_time = 1) 

或者你可以打破了两个过程:

# QUERIES TO DATA FRAMES 
weeknum<-c('201401','201402','201403') 
for (i in weeknum) { 
    data <- sqlQuery(db, qstr, believeNRows = FALSE, rows_at_time = 1) 
    assign(paste("data",i,sep=""),data) 
} 

# DATA FRAMES TO CSV FILES 
dfList <- c('data201401','data201402','data201403') 
for (n in dfList) { 
    df<-get(n) 
    filename<-paste(n, ".csv", sep="") 
    write.csv(df, file = filename) 
}