如何为SSIS中的每个循环容器上传两个名称几乎相同的文件?

how to upload two files with almost same name with for each loop container in SSIS?

我有两个同名的 CSV 文件。

1.S101053_345_1809.csv

2.SAS101053_345_1809.csv

文件名格式如下。 1. 第一个是销售档案。 "S"表示销售档案,101053为经销商代码,345为公司代码,1809为年月。 2. 第二个是库存和销售文件。 "SAS"表示库存和销售额,101053是分销商代码,345是公司代码,1809是年月。

我正在尝试通过 SSIS 中的 For each File 循环容器上传数据。 SAS 文件包执行良好,文件上传成功。但是当它迭代 S 文件(销售文件)时,它会读取这两个文件。销售和库存和销售。因为它在两个文件的开头都找到了 "S"。附件是 "For each loop container"

的配置截图

对于每个循环容器配置:

如何从同一文件夹上传两个文件。

您可以插入脚本组件来查询文件名。如果它包含 "SAS" 则设置一个忽略标志变量。然后检查这一点并将 "SAS" 文件发送到空白序列容器

脚本应该是这样的

StrFileName = Dts.Variables("varFileName").Value.ToString 
'varfilename is the name returned from the for each loop
IntInstr = InStr(StrFileName, "SAS")
if IntInstr = 0 then 
   ' if "SAS" is not found in the filename then set the varFileOK to True
   Dts.Variables("varFileOK").Value = True
   Else
   Dts.Variables("varFileOK").Value = False
End If
Dts.TaskResult = Dts.Results.Success

然后使用数据流箭头上的 "Expression and Constraint" "Edit" 工具来测试 "VarFileOK" 的值。

如果为 True,则将数据指向 "File to ignore" 数据流。

如果为 False,则处理文件。