如何为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,则处理文件。
我有两个同名的 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,则处理文件。