SSIS----用7z.zip解压文件后导入数据库.(二)
接上步.也就是成功后(表示有今天的文档,具体就看上篇的代码)那么按题意就是要删除表里的数据.然后解压.
但是大家都能看到.我们是在遍历文件.不可能每次都删除文档.这里我用了个变量,来按他只删除一次文档.在这里,我在把这个总体图发一次.
(可能有人会问,为什么删除数据不放前面.因为不能保证是否有今天文档.其实也有一个方法.就是用时序容器的事务性.当遍历文件失败后因事务就会还原删除的数据.可惜我不会设置)
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_234532.png)
在这,我先把那线的含义给说下.绿色表示成功,红色表示失败,蓝色表示完成(不管是成功还是失败)
线上有个框框上有fx表示是表达式.可以看到线1和线2上都要求成功和表达式,那可以看一下.
线1图:
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_155841.png)
线2图:(看到下面的多个条件约束没.那里是OR,对应上面图的虚线.呵呵,大家应该猜到了.线3图也是OR)
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_155909.png)
线3图:
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_155932.png)
先说下IsHaveData是什么,这个值默认是FASLE,但是他如果经过transfer data成功后,会执行一段指令.很简单,
就是把IsHaveData设为TRUE;那这里三线就表示,如果有今天的数据,那么如果IsHaveData是FASLE,表示没有
插入数据.那么他就会删除数据(此时走线1,然后走线3).然后解压文件.再插入数据后,他就会再去走线路2,直接解压.
而线3和线2为Or的关系,表示只要有一样完成,就开始解压文件.
解压文件是利用组件执行处理工作.如下设置相应属性.
1.关联要处理的应用程序.
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_161759.png)
2.设置程序要的执行命令参数.
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_161812.png)
那么,在这里就已经把文件给解压了(希望有人不要问我那个OutCommand是如何来的).那下一步就是transfer data,在上面双击后
如下图所示.
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_162440.png)
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_162521.png)
在上面对应的有数据来源.数据转换.数据目的地三个部分.
连接管理器里我们看前二个.一个是数据目的的数据库连接.另一个是数据来源的数据.
在这里我们解压后的文件是csv文档.所以我们选择是一般文档连接.
如下图
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_163206.png)
![](https://images.cnblogs.com/cnblogs_com/zhouxin/2009-11-06_163224.png)
可以知道,在运行过程中,我们是不知道档案名称,所以我们也是根据前面指令动态生成的档案名称.就是设置表达式里的connectionString里的属性.
但是在这之前我们程序没有运行,OutFileName没值,我们可以先在上面指定一个和OutFileName文件里同样式属性的文件,用来设置相关资料.而在运行时
他会自动把档案名称根据表达式给换成OutFileName,还是很强大的.
下面的SQL连接就不说了,自己搞搞就全知道了.
然后我们把数据来源上的连接连到我们刚刚设置好的mrpexecl,而目的地连接上面的SQL连接.然后你选择要他们资料行的对应关系就好.
下面第三页简单的说下文件A的处理(和B的差不多一样,就说下不一样的部分.)然后说下文件备份和删除.