[英]R dynamic sql query using RODBC and export to .csv
If I run the following code in R studio then it works but I have set sys.sleep. 如果我在R studio中运行以下代码,则可以运行,但已设置sys.sleep。 I have a large batch of queries to run and I don't know how long each will take.
我有大量查询要运行,但我不知道每个查询要花多长时间。 If I exclude the sys.sleep then the exports are blank as the export is run before the query is complete.
如果我排除sys.sleep,则导出是空白的,因为在查询完成之前运行了导出。 Is there a way of getting R to wait until the query is complete?
有没有办法让R等待查询完成?
#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)
}
From this SO post , try adding the rows_at_time
argument: 从这个SO帖子中 ,尝试添加
rows_at_time
参数:
data <- sqlQuery(db, qstr, believeNRows = FALSE, rows_at_time = 1)
Alternatively you can break up the two processes: 或者,您可以分解两个过程:
# 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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.