2011-06-19 69 views
0

我已经创建了一个包,使用FTP任务从FTP中拉出excel文件,然后将Excel文件处理为SQL数据库。从FTP中拉出后,Excel将存储在一个文件夹中。我已经将File路径存储在一个变量中,并且在Precedence costraint中给出了一个条件来检查该文件是否存在于文件夹中。只有存在文件路径时才应该执行excel处理任务。但似乎即使文件不存在,程序包也会执行,这会失败。所以我想检查一下我给出的情况是否错误。我在优先约束已给出的条件如下:优先约束条件

@[User::FilePath] != "" 

其中@ [用户::文件路径]包含即C中的文件路径:\ FTPDestination \ FileName.xlsx

是上述条件不正确?什么是正确的条件给予?

回答

1

使用条件@[User::FilePath] != ""无助于验证文件是否存在。此条件将仅检查字符串变量FilePath是否为空字符串。

这是您可以用来实现您的要求的可能选项。您可以放置​​Foreach loop container来循环访问给定文件夹中的文件。

  1. 配置如屏幕截图#所示SSIS包。放置一个FTP task,Foreach loop container并且可以将任何任务放置在Foreach循环容器中。

  2. 创建4个变量,如截图#所示。 FTP路径包含下载FTP文件的路径; FolderPath包含保存文件的文件夹; FileExtension是应该匹配循环通过Foreach循环容器内的文件;并且FilePath将成为Foreach循环容器中将要循环的每个文件的路径。

  3. 配置在屏幕截图中所示的作为FTP task#和#4

  4. 配置在scrteenshots所示的Foreach loop container为#和#6

  5. 屏幕截图#当一个文件从FTP成功下载到目标文件夹。

  6. 屏幕截图#在FTP文件夹中找不到匹配的文件时显示。如果您不希望FTP任务在没有找到文件时失败,请参阅我在this Stack Overflow question中的回答。

希望有所帮助。

截图#1:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

5

截图#6:

6

截图#7:

7

截图#8:

8