最近接手一个项目,程序的基本框架是:程序A导出数据,以.tsv格式存储,数据列之间以tab间隔;程序B吃文档,把数据导入到数据库中,并把处理过的文档备份/移动到指定的目录中。为了快速开发,程序B设计成SSIS的Package,本文主要分享Package的设计思路,组件用法和注意事项。在设计Package时,使用Foreach Loop Container组件遍历Folder中存储的.tsv文档,通过平面文件源读取遍历的tsv文件,通过Expression Task组件获得该文件的备份路径,通过File System Task把处理过的文件移动到指定的目录中,该Package主要用到四个组件,分别是,Flat Files Source,Expression Task和 File System Task,Package的设计核心简化为下图所示:
一,遍历目录
导入文档内容的第一步是遍历目录,读取文件的路径,这一步可以通过Foeach Loop Container组件实现。打开Collection选项卡,如下图,从枚举器(Enumerator)列表中选择“Foreach File Enumerator”,枚举器的配置界面如下图:
Folder:指定遍历的目录
Files:指定文件名模式,示例是 *.tsv,代表文件名以.tsv结尾的所有文件,其中通配符*代表任意字符;
Retrieve file name:获取文件名的模式,默认选项是完全限定名(Full qualified),格式是:虚拟盘符+目录+文件名+文件扩展名;
Traverse Subfolders:如果勾选遍历子文件夹,那么文件遍历器将会遍历Folder下的子目录。
枚举器的配置属性,都可以通过Expressions属性来配置,属性表达式的配置界面如下图:
在变量映射(Variable Mappings)选项卡中,选择变量User::DataFilePath,用于临时存储每次遍历获取的文件名:
如果指定的目录下,没有存储任何文件,那么遍历循环容器(Forea