【问题标题】:Precedence Constraints优先约束
【发布时间】:2011-06-19 10:16:55
【问题描述】:

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

@[User::FilePath] != ""

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

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

【问题讨论】:

    标签: ssis


    【解决方案1】:

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

    这是一个可能的选项,您可以使用它来满足您的要求。您可以放置​​ Foreach loop container 以循环浏览给定文件夹中的文件。

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

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

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

    4. 如屏幕截图 #5 和 #6 所示配置 Foreach loop container

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

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

    希望对您有所帮助。

    屏幕截图 #1:

    屏幕截图 #2:

    截图#3:

    屏幕截图 #4:

    屏幕截图 #5:

    屏幕截图 #6:

    截图#7:

    截图#8:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多