SSIS :- 变量 fof excel 文件名

SSIS :- variable fof excel filename

我有一个包含多个 excel 文件的文件夹。 Excel 文件名几乎相同,只是每个文件名最后包含月份和年份数字。

示例

Emp_04_2017.xlsx
Emp_05_2017.xlsx
...

我想创建一个 SSIS 包来选择当前月份的文件并将其插入目标 table。

一种方法是创建 SSIS 变量来存储当前的月份和年份,然后使用它们在第三个变量中构造文件名。

使用 ForEachLoopContainer。

ForEach 循环容器将从 FolderPath 变量和 return complete CompletePath(路径+文件名)中选取文件。循环将遍历 FolderPath 位置中的所有文件。

  1. Foreach 循环容器:双击 -> 在集合中设置表达式目录 = FolderPath,枚举器配置 -> 文件:(.xlsx)。 可变映射 -> 变量 (CompletePath) 索引 0。
  2. EXPR_GetFirstOcrDash:用于获取文件名中破折号第一次出现的表达式,@[User::FirstOcr] = FINDSTRING(REVERSE(@[User::CompletePath]), "_", 1)。
  3. EXPR_ExtractFileName:表达式用于从文件名中获取月份,@[User::FileMonth] = (REVERSE(SUBSTRING(REVERSE(@[User::CompletePath]), @[User ::FirstOcr]+2, 1)) == "0" ? REVERSE(SUBSTRING(REVERSE(@[User::CompletePath]), @[User::FirstOcr]+1, 1)) :REVERSE(SUBSTRING(REVERSE(@[User::CompletePath]), @[User::FirstOcr]+1, 2)))
  4. EXPR_SetFileToProcess:用于设置我们找到的文件进行处理,@[User::FileToProcess] = @[User::CompletePath]
  5. EXPR_StopProcessing:循环会不断地检查文件夹中的所有文件,当我们找到第一个当前日期月份的文件时,我们不会进一步寻找文件。 更好的做法是使用两个目录 Source 和 Archive,处理文件后使用 FileSystemTask 将处理后的文件移动到 Archive 目录。

在绿色箭头上添加了优先约束。

处理完 Foreach 循环容器后,您可以使用 FileToProcess 变量并在 DataFlowTask 中使用该文件。