zoukankan      html  css  js  c++  java
  • BI之路学习笔记2--SSIS/ETL设计练习三:《DB->定期生成excel表》

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

    现在的问题是:

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

    而我们的要求是:

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

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

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

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

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

    SELECT 'D:DBTableToExcelexcel1-' + 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>循环

    效果如图:

     

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

  • 相关阅读:
    信息安全系统设计基础第十二周学习总结
    day07-流程控制之while循环
    day07-深浅拷贝
    第一次小测
    day05-与用户交互与运算符
    day05学习笔记-垃圾回收机制
    day04学习笔记-变量
    day03-python-学习笔记
    P4323-[JSOI2016]独特的树叶【换根dp,树哈希】
    CF990G-GCD Counting【dfs】
  • 原文地址:https://www.cnblogs.com/ammy714926/p/4810285.html
Copyright © 2011-2022 走看看