Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为SSIS中的每个循环容器上载两个名称几乎相同的文件?_Ssis_Integration_Ssis 2012 - Fatal编程技术网

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

如何为SSIS中的每个循环容器上载两个名称几乎相同的文件?,ssis,integration,ssis-2012,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文件(销

我有两个几乎同名的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”。附件是“每个循环容器”的配置截图

对于每个循环容器配置:


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

您可以插入脚本组件来查询文件名。如果它包含“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

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

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

如果为False,则处理文件。

尝试两个foreach循环。第一次查找SAS*.csv,第二次查找S*.csv这假设您在加载后将文件移动到已处理文件夹。您好,感谢您的回复。。我不习惯C代码。如果可能的话,你能给我完整的c脚本吗。。再次感谢。@ShahabHaidar不幸的是,我只在vb.net中工作。不过,将其转换为c并不难。请看这里: