SSIS----用7z.zip解压文件后导入数据库.(一)
SSIS初学.给同学SSIS的一个参考.
如题,先说下主要的要求如下:
.有数据库DB里有TableA和TableB.A里有字段ClassID.B也有这个字段.
.有二种不同类型的zip压缩文件A和B都在文件夹Dir下,但是这二种文档都分几个几种型别,如A1,A2,B1,B3;A1的ClassID全为1.A2的ClassID全为2.以此来推,A和B的文件里都命名里都有今天的日期.
.其中对于A的处理如下,搜索文件夹Dir下,有没今天的文档.如果有,例如A1,那么先在DB里TableA先删除里ClassID为1的数据.然后把解压后的文件A1里的数据插入数据库表TableA,然后重复这个过程.
.对于B和处理,只有一个不同,就是只要发现有今天的B文件.那么先删除TableB,然后导入所有今天B文档的资料.
.最后就是备份文件夹Dir的所有zip文件到文件夹DirPak里,然后删除文件夹Dir的所有文件.
上面的要求确认后,先想了下.此过程要求的变量差不多如下所示.
其一,FileName是用来在文件夹Dir下遍历的文件名.
其二,IsHaveData是用来表示是否插入过数据.作用后明
其三,OutCommand是用来生成7z.zip所要解压文件的命令
其四,OutFileName是用来表示解压后的文件后.
其五,表示文件夹Dir的路径.
那下面.我们开始先来完成对于B文件的处理.先来一个完整的,大家有个印象.
那个我们来分析过程.
首先,我们要遍历文件夹看是否今天的压缩文件.
那么我们用个ForEach容器.如下设置.
1.设置Enumerator是文件遍历.因为我们只要zip的压缩文档,在这里文件名取完整的,因为我要给7z解压是要绝对路径的.
2.在Expressions(表达式)里设置要遍历的目录为上面文件夹Dir的路径SrcPath
3.在参数对应里设置为FileName
接下来.我们查询当前的文件是否是满足一定要求,这个是看需求的.在这里我们用指令码工作来完成.
同样,先要设置相关的属性.主要是传进传出的参数.如下:传进去参数当然是当前的文件名.传出的包括7z解压的命令行和解压后的文件名.
这完成后就是设计指令码,在VS2005里语言只能是VB的,我VB不会,但是一些简单和C#差不多.如下.
可以看到很简单的.我就没做注解了.主要工作就是找有没满足要求文档.生成解压命令.生成解压文件名.里面的Dts.Variables("Plant")这行大家删除.这个流程没有用到这个.也没个这个变量,所以要删除.
..因为这个编辑的时候太长了不容易编辑,所以我就转下页接点说.