3.7 File System任务
我们来考虑一个来自大型主机系统的典型ETL进程。通常当我们希望使系统自动进行数据加载时,整个过程大致如下:
● 通过FTP从大型主机或源系统接收一个文件
● 程序包看到目录中的文件时并将它移动到工作目录下
● 数据然后从文件中解压缩出来,然后文件将存档到另一个目录中
以前在SQL Server 2000中,上述步骤的每一步都需要通过使用ActiveX Script任务进行大量的脚本编程。你必须以VBScript编写一个任务来轮询目录以查看文件是否已到达。同时需要另一个脚本来负责查看文件并将它转移到另外的目录,最后一个脚本负责对文件进行存档。通常这需要数十行代码,如果编写所有的错误检查功能则需要上百行代码,而且对它们进行更新也是个不小的负担。
在SQL Server 2005中,随着File System任务的加入,上述过程变简单了很多。该任务允许执行文件操作,例如复制、移动并删除文件。它还可以执行目录功能,例如创建、删除、复制、移动或重命名目录。它还可以设置操作系统属性并删除目录中的所有内容。
在File System任务中的大多数属性都是在File System Task Editor的General页面中设置,如图3-8所示。该页面的内容可能会随用户在Operation选项中的设置而异。Operation选项指定了希望任务所完成的操作。这些操作包括前面提到的所有项,例如执行文件、目录和SET操作。一旦设置了该选项,页面将动态地将自己转换为针对相应操作的界面。例如,如果选择Delete Files,则不需要再设置DestinationPath 选项。
IsDestinationPathVariable选项允许指定是否将目的地设置为SSIS变量。如果该选项设置为true,则动态属性Destination- Variable将目的地路径设置为一个变量。如果该选项设置为false,则可以使用DestinationConnection选项来选择包含文件或目录的Connection Manager。在页面底部具有针对源连接的上述相同属性。OverwriteDestination选项默认设置为false并指定了任务是否将覆盖已经存在的目的地文件或目录。在第5章的介绍内容中将多次使用到该任务。