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 位置中的所有文件。
- Foreach 循环容器:双击 -> 在集合中设置表达式目录 = FolderPath,枚举器配置 -> 文件:(.xlsx)。
可变映射 -> 变量 (CompletePath) 索引 0。
- EXPR_GetFirstOcrDash:用于获取文件名中破折号第一次出现的表达式,@[User::FirstOcr] = FINDSTRING(REVERSE(@[User::CompletePath]), "_", 1)。
- 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)))
- EXPR_SetFileToProcess:用于设置我们找到的文件进行处理,@[User::FileToProcess] = @[User::CompletePath]
- EXPR_StopProcessing:循环会不断地检查文件夹中的所有文件,当我们找到第一个当前日期月份的文件时,我们不会进一步寻找文件。
更好的做法是使用两个目录 Source 和 Archive,处理文件后使用 FileSystemTask 将处理后的文件移动到 Archive 目录。
在绿色箭头上添加了优先约束。
处理完 Foreach 循环容器后,您可以使用 FileToProcess 变量并在 DataFlowTask 中使用该文件。
我有一个包含多个 excel 文件的文件夹。 Excel 文件名几乎相同,只是每个文件名最后包含月份和年份数字。
示例
Emp_04_2017.xlsx
Emp_05_2017.xlsx
...
我想创建一个 SSIS 包来选择当前月份的文件并将其插入目标 table。
一种方法是创建 SSIS 变量来存储当前的月份和年份,然后使用它们在第三个变量中构造文件名。
使用 ForEachLoopContainer。
ForEach 循环容器将从 FolderPath 变量和 return complete CompletePath(路径+文件名)中选取文件。循环将遍历 FolderPath 位置中的所有文件。
- Foreach 循环容器:双击 -> 在集合中设置表达式目录 = FolderPath,枚举器配置 -> 文件:(.xlsx)。 可变映射 -> 变量 (CompletePath) 索引 0。
- EXPR_GetFirstOcrDash:用于获取文件名中破折号第一次出现的表达式,@[User::FirstOcr] = FINDSTRING(REVERSE(@[User::CompletePath]), "_", 1)。
- 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)))
- EXPR_SetFileToProcess:用于设置我们找到的文件进行处理,@[User::FileToProcess] = @[User::CompletePath]
- EXPR_StopProcessing:循环会不断地检查文件夹中的所有文件,当我们找到第一个当前日期月份的文件时,我们不会进一步寻找文件。 更好的做法是使用两个目录 Source 和 Archive,处理文件后使用 FileSystemTask 将处理后的文件移动到 Archive 目录。
在绿色箭头上添加了优先约束。
处理完 Foreach 循环容器后,您可以使用 FileToProcess 变量并在 DataFlowTask 中使用该文件。