优先约束

时间:2011-06-19 10:16:55

标签: ssis

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

@[User::FilePath] != ""

其中 @ [User :: FilePath] 包含文件路径,即 C:\ FTPDestination \ FileName.xlsx

以上情况是否不正确?什么是正确的条件?

1 个答案:

答案 0 :(得分:1)

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

您可以使用以下选项来满足您的要求。您可以放置​​Foreach loop container来循环访问给定文件夹中的文件。

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

  2. 创建4个变量,如屏幕截图# 2 所示。 FTPPath 包含下载FTP文件的路径; FolderPath 包含要保存文件的文件夹; FileExtension 是Foreach循环容器中应该匹配以循环的文件;和FilePath将是将在Foreach循环容器中循环的每个文件的路径。

  3. 配置FTP task,如屏幕截图# 3 和# 4 所示。

  4. 配置Foreach loop container,如scrteenshots# 5 和# 6 所示。

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

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

  7. 希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

    屏幕截图#7:

    7

    屏幕截图#8:

    8