BI之路学习笔记2--SSIS/ETL设计练习三:《DB->定期生成excel表》

上次笔记记到,用sql任务给参数赋值,映射到变量,然后把数据流任务放到序列容器中进行执行,可以定期生成excel,

现在的问题是:

在EXCEL目标编辑过程中,必须选定某一个特定的excel目标,这样的话,如果部署到sqlJob中,每次都会在同一个EXCEL中增加记录数,即每次运行都会在同一个EXCEL的相同sheet中写入查询出的记录,

而我们的要求是:

每月末运行加载一次SSIS包,每次在特定路径下生成新的excel,命名格式为:XXX-XXXXXX.xlsx的文件,即:'内容-年月日.xlsx’

经过了解我的解决方案是:

先决条件:执行一次数据流任务,在特定路径--D:\DBTableToExcel\bak路径--下建立带有查询之后复制列表名表头建立新的template: OriginalExcel.xlsx。它同时也是每次运行查询后写入的excel目

标,然后复制一份到D:\DBTableToExcel路径下,为了4>步将模板拷贝至EXCEL目标位置。

1>SQL任务:建立一个select语句选择作为新生成的EXCEL需要放置的路径

SELECT 'D:\DBTableToExcel\excel1-' + CONVERT(nchar(8), GETDATE(), 112) + '.xlsx' AS ExcelFileAddress

2>数据流任务:excel目标,每次都在此excel目标中写入数据,名为:OriginalExcel.xlsx

3>文件系统任务:重命名文件,其实就是将生成好的bak路径下的sourceConnection即  OriginalExcel.xlsx ->重命名为一份新的文件《自带复制功能》->ExcelFilePath,

注:如果想多次运行调试执行包,则重命名选项:OverwriteDestination的值要设置为:true

4>文件系统任务:复制文件,即拷贝模板OriginalExcel.xlsx(D:\DBTableToExcel路径下)至  excel目标 的路径位置,文件名不变,即OriginalExcel.xlsx。

5>循环

效果如图:

 

看一个多个序列容器的成品图:

 

posted @ 2015-09-15 14:54  依旧一生有你  阅读(558)  评论(0编辑  收藏  举报