【问题标题】:Check if file exists in folder or not (SSIS, SDT 2015 and SQL 2016)检查文件夹中是否存在文件(SSIS、SDT 2015 和 SQL 2016)
【发布时间】:2017-05-23 06:53:43
【问题描述】:

我需要将多个文件加载到 SQL 表中。我有 CSV、XLSX 和 XLS 三种不同的格式,但我会一次加载一种类型的文件,不会组合不同的文件类型。

首先,我将检查我的源文件夹是否存在该文件。如果存在,将其加载到表中并移动到下一个文件。文件检查和选择过程必须是动态的。我不想在变量中硬编码文件名。包启动时,每次运行包时,我都需要文件名变量来保存文件夹中的第一个文件。

如果在文件夹中找不到该文件,请发送邮件提醒该文件不存在。

例如,如果我的文件夹中有三个文件,

File1.csv
File2.csv
File3.csv

我运行我的包并在第一次运行时硬编码文件名variable = File1.csv。我的包成功执行并将file1加载到表中并将其存档到存档文件夹。

下一次运行每个循环时,它会查找变量 filename = File1,但它已经存档,因此我的包将无法处理文件夹中的 file2。我怎样才能正确地做到这一点?

【问题讨论】:

  • stackoverflow 文档 link 从一个文件夹中加载多个相同格式的 CSV 文件

标签: sql ssis


【解决方案1】:

首先使用脚本任务检查文件夹中是否存在任何文件。创建一个整数变量并将其设置为 1,如果找到文件,则设置为 0,如果找不到文件。在优先约束中使用表达式和约束。 http://www.techbrothersit.com/2013/07/ssis-how-to-check-if-file-exists-in.html 如果评估表达式为假,则将其连接到邮件任务,否则 连接到每个循环任务。 请参考:https://www.simple-talk.com/sql/ssis/ssis-basics-introducing-the-foreach-loop-container/ 或更多详情。

【讨论】:

    【解决方案2】:

    SSIS 中的一个技巧是创建一个 Foreach 循环。

    • 创建一个包含文件所在路径的变量。示例用户::文件路径
    • 创建另一个变量来保存在 Foreach 循环中找到的实际文件,例如 User::filename

    • 从 SSIS 工具箱添加 Foreach 循环。

    • 在 Foreach 循环编辑器的 Collection 左侧选项卡上,选择 Enumerator - Foreach 文件枚举器

    • 单击表达式并为属性目录添加一个,然后在表达式中选择@[User::filepath]

    • 在文件夹中输入文件路径变量的值(这将在执行时从上面的表达式中被覆盖,如果文件路径在运行时更改)

    • 在文件中输入类似 . 或 *.txt 或您要应用于文件夹的任何过滤器。

    • 在 Variable Mappings 左侧选项卡的 Variable 列中选择 User::filename 变量,Index 列将默认为 0。

    • 然后将您的逻辑放入 Foreach 循环框中。

    这只会在找到文件时执行您的逻辑。如果文件夹中存在多个文件,您也可以使用它来处理多个文件。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      Foreach 循环容器的问题是它不会处理容器内的任何任务,但会在容器外继续。

      解决方案是对下一个任务的约束的表达式。

      enter image description here

      它将检查 Foreach 循环容器中使用的可变长度。如果文件不存在,则表达式将返回 0 和 FALSE。

      LEN(@[User::filePath]) > 0 ?真:假

      filePath = Foreach Lop 容器变量

      enter image description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-08
        • 1970-01-01
        • 2015-11-19
        • 2012-02-05
        • 2020-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多