首页 文章

从SQL Server表中提取数据并保存为多个CSV文件?

提问于
浏览
0

我试图找出如何从SQL Server表中提取数据并将一个表的内容保存到单独的CSV文件中,基于一个名为ASOFDATE的字段 . 我的ASOFDATE是月结束日期 .

这是我到目前为止所拥有的 .

library(RODBC)

# connect to database 
dbhandle = odbcDriverConnect('driver={SQL Server};server=SERVER_NAME;database=DATABASE_NAME;trusted_connection=true')

sampledata <- sqlQuery(dbhandle, "select * from [SERVER].[dbo].[TABLE]")

# Close the connection
close(dbhandle) 

# Create a Date vector containing the 1st of all the subsequent months and subtract 1 day 
# date.end.month <- seq(as.Date("2012-02-01"),length=4,by="months")-1

ASOFDATE <- seq(as.Date("2016-02-01"),length=12,by="months")-1

不知怎的,在这里我想我需要遍历DataFrame,但我不知道该怎么做 .

for (i in sampledata) {
  do some kind of filter by ASAOFDATE

write.csv(sampledata, paste0("C:/Users/RSMITH/Desktop/test/", ASOFDATE, ".csv"), row.names = FALSE) 

}

因此,例如,我使用它来从表中获取数据 .

数据集< - sqlFetch(dbhandle,“DATA”)

数据集包含以下字段:N_ID,SEQ_NO,REPORT_PERIOD_END,CONTACT_ID,CONSOL_KEY,CUSTOMER_NAME,COMPANY_CODE,SECTOR,OFFICER,ASOFDATE,COMPANY,REPORT_LINE

我创建了一个我希望“过滤”的月结日期列表:ASOFDATE < - seq(as.Date(“2016-02-01”),length = 12,by =“months”) - 1

然后,根据ASOFDATE在表中“过滤”记录,并将每个块保存为CSV,日期在文件名中 .

我100%肯定这是可能的,但我只是不知道如何将数据分成块并保存每个块 .

1 回答

  • 1

    你可以在这里使用 tidyverse . 首先,创建一个路径向量,您可以将文件保存到 . 然后根据此列表中的 ASOFDATEwalk 将数据拆分为 list ,同时保存列表中的元素 .

    library(tidyverse)
    
    paths <- paste0("Desktop/", sampledata$ASOFDATE, ".csv")
    
    sampledata %>% 
      split(.$ASOFDATE) %>% 
      walk2(., paths, ~write_csv(.x, .y))
    

    数据

    sampledata <- data_frame(
      ASOFDATE = seq(from = as.Date("2017-05-01"), as.Date("2017-05-05"), "days"),
      var1 = 1:5,
      var2 = 1:5
    )
    

相关问题