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

时间:2018-10-22 06:50:24

标签: ssis integration ssis-2012

我有两个名称几乎相同的CSV文件。

1.S101053_345_1809.csv

2.SAS101053_345_1809.csv

文件名模式如下。 1.第一个是销售文件。 “ S”表示销售文件,101053是发行人代码,345是公司代码,而1809是年份和月份。 2.第二个是库存和销售文件。 “ SAS”表示库存和销售,101053是分销商代码,345是公司代码,1809是年月。

我正在尝试通过SSIS中的每个文件循环容器上载数据。 SAS文件包可以很好地执行,并且文件可以成功上传。但是,当迭代访问S文件(销售文件)时,它将读取两个文件。销售以及库存和销售。因为它在两个文件的开头都找到了“ S”。附件是“对于每个循环容器”的配置屏幕截图

对于每个循环容器配置:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

脚本就是这样

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

然后使用数据流箭头上的“表达式和约束”“编辑”工具来测试“ VarFileOK”的值。

如果为True,则将数据指向“要忽略的文件”数据流。

如果为False,则处理文件。