微软BI 之SSIS 系列 - 利用 Execute Process Task 压缩和解压缩数据文件

浏览: 4894

开篇介绍

Execute Process Task 从字面意思上理解就是一个可以执行应用程序的任务,在 SSIS 中可以使用 Execute Process Task 调用应用程序 .exe 或者 .bat 批处理文件,包括使用 JAVA 命令调用 JAVA 应用程序。在实际的 ETL 项目中,考虑到磁盘空间问题,一般使用 Execute Process Task 来归档文件,进行压缩或者解压缩等操作;或者在通过 Send Mail Task 中发送邮件附件文件时,现对文件进行压缩处理;在一些自定义的调度框架中也会使用 Execute Process Task 来控制包的调用等等。

Execute Process Task 初体验 - 调用 CMD 命令创建文件夹 

在 CMD 中,我们如果要创建一个文件夹,比如在 D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\OUTPUT_DIRECTORY\023 目录下创建一个 TEST_FOLDER_FROM_CMD 新的文件夹,命令如下图所示:

那么在 SSIS 中,我们是这样来调用的。新建一个包并创建一个 Execute Process Task 任务,配置如下:

C:\Windows\System32\cmd.exe

/C MD D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\OUTPUT_DIRECTORY\023\TEST_FOLDER_FROM_EXPT

程序执行成功 -

在程序中可以看到新创建好的文件夹。

当然也可以通过配置变量来实现,这样路径和命令就不会是写死的值了。

通过这个小例子,简单的了解了一下 Execute Process Task 的大致作用,下面的两个例子讲解的是如何使用 Execute Process Task 来完成压缩和解压缩的操作。

数据文件压缩的操作

压缩文件的工具我们选择的是免费的 7-zip - http://www.7-zip.org/

在我们的测试目录下有这样的一些文件。

我们现在需要将它们打包压缩并归档到 ARCHIVE 目录下,新建四个变量:

  1. PV_EXE_ZIP (7z 压缩程序的路径) -  C:\Program Files (x86)\7-Zip\7z.exe 
  2. PV_EXE_ZIP_SOURCE ( 要压缩文件的路径) - D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\INPUT_DIRECTORY\023\*
  3. PV_EXE_ZIP_ARCHIVE (压缩归档的路径) - D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\OUTPUT_DIRECTORY\023\archive
  4. PV_EXE_ZIP_CMD (命令行) - "a -t7z " + @[User::PV_EXE_ZIP_ARCHIVE] + "\\BIWORK_ZIP_"+REPLACE( (DT_WSTR, 11) (DT_DBDATE) GETDATE(),"-","_") +" "+ @[User::PV_EXE_ZIP_SOURCE]

新建一个 Execute Process Task,修改它的 Expression 如下图所示 - 

也可以在调试阶段先配置好 Executable 和 Arguments,但是实际上在运行时它们的值还是通过上面的 Expression 配置而来的。

执行完成之后就可以在 OUTPUT 路径下看到压缩包,并且其名称根据表达式自动计算当前时间。

双击可以查看压缩包中的内容。

把这个压缩包拷贝到 INPUT DIRECTORY 中去,我们下面演示如何对它进行解压缩操作。

解压缩操作

新建三个变量 - 

  1. PV_EXE_UNZIP_SOURCE - D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\INPUT_DIRECTORY\023\BIWORK_ZIP_2014_10_05.7z
  2. PV_EXE_UNZIP_OUTPUT - D:\BIWORKSPACE_FILE\TS_BIWORK_SSIS\OUTPUT_DIRECTORY\023\BIWORK_UNZIP
  3. PV_EXE_UNZIP_CMD - 它的表达式为 "x " + @[User::PV_EXE_UNZIP_SOURCE] + " -o" + @[User::PV_EXE_UNZIP_OUTPUT] 

新建一个 Expression Task,同样的需要配置它的 Expression。

保存并执行 EXPT_UNZIP_FILES,可以看到文件被解压缩出来。 

推荐 0
本文由 BIWORK 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册