背景
每月给业务部门提取数据,每个分公司都要提取一般,先跑SQL,再粘贴到Excel中,然后发邮件给相关的人员。费时费力,还容易粘贴错位。因此,需要通过一个程序完成这些步骤。我首先想到的是通过SSIS完成这些工作:包括三步。第一,提取数据并生成各个分公司的Excel文件;第二,压缩文件;第三步,发送邮件。
由于对SSIS并不熟练,看过网上一些文章并自己琢磨后,提炼出一些相关的功能。希望本文能够对工作中的你有所帮助。
目的
学习SSIS中的遍历组件。实例:生成对应分公司的Excel文件,每个分公司生成一个文件。
思路与具体操作
1. 从机构表[branch]中找到二级机构,找到分公司所写代码属性abbrCode。遍历这个表,及需要遍历的集合为select abbrCode from branch where branchLevel=2
branch表结构
字段 |
类型 |
描述 |
Id |
Int |
自增长ID |
branchName |
Varchar(50) |
机构名称 |
abbrCode |
Varchar(20) |
分公司名称缩写 |
branchLevel |
Int |
机构层级 |
parented |
Int |
父节点 |
2. 根据模板文件[GABonus.xls],通过遍历二级机构列表生成GABonus[BJ|GD|SH|…].xls的文件。文件名规则:以GABonus开头+分公司名称缩写
SSIS图
步骤
1. 建立SQL查询,“Excecute SQL Task”组件配置
2. 配置[Foreach Loop Container]控件
3. 配置Script Task 组件
脚本
1 Imports System 2 Imports System.Data 3 Imports System.Math 4 Imports Microsoft.SqlServer.Dts.Runtime 5 6 Public Class ScriptMain 7 Public Sub Main() 8 Dts.Variables("newFileName").Value = "D:GABonus" + Dts.Variables("newCodeString").Value.ToString() + ".xls" 9 Dts.TaskResult = Dts.Results.Success 10 End Sub 11 End Class
本文原创,转载请联系作者本人