【问题标题】:R dynamic sql query using RODBC and export to .csv使用 RODBC 的 R 动态 sql 查询并导出到 .csv
【发布时间】:2015-02-07 20:59:04
【问题描述】:

如果我在 R studio 中运行以下代码,那么它可以工作,但我已经设置了 sys.sleep。我有大量查询要运行,我不知道每个查询需要多长时间。如果我排除 sys.sleep 则导出为空白,因为导出是在查询完成之前运行的。有没有办法让 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)
  }

【问题讨论】:

    标签: sql r for-loop wait rodbc


    【解决方案1】:

    从此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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      相关资源
      最近更新 更多