我使用SSIS读取输入中的.txt文件并通过它们执行我的业务逻辑将输出结果保存在一个文件中,该文件的名称与当前的inpout文件相同(文件名动态存储在变量中)。
当所有文件都存储在同一个文件夹中时,访问它们没有问题,因为我在数据流中对平面文件连接字符串使用以下表达式:"path" + @[User::inputFileName] + ".txt"
现在我必须处理一个包含子文件夹的文件夹(我在foreach循环中设置了遍历子文件夹),我对平面文件连接字符串有一些问题,因为我不能使用像这样的通配符:my path\\subfolder*" + @[User::inputFileName] + ".txt"
每个子文件夹都有相同的名称,只更改名称的最后部分。
如何将当前子文件夹名称保存在变量中,以便我可以按以下方式使用它? "path\\"+ @[User::currentSubFolder] +"\\" + @[User::inputFileName] + ".txt"
答案 0 :(得分:1)
我能够解决我的问题,因此我在这里写下我的解决方案,以防其他人处于同样的情况。
我在foreach循环之前使用了一个脚本转换块。从中我可以检索当前的完整路径(之后在平面文件连接字符串中使用)和没有扩展名的输入文件名,以用作包含SSIS脚本结果的输出文件名。
为了保留兴趣值,我使用了2个变量:一个用于文件名,一个用于路径。
这里是脚本代码:
Public Sub Main()
'Variable Index 0 => FileName
'Variable Index 1 => filePath
Dim fullPath As String = Dts.Variables.Item(1).Value.ToString
Dim fileName As String = Path.GetFileName(fullPath)
fileName = fileName.Substring(0, fileName.Length - 4)
Dts.Variables.Item(0).Value = fileName
Dim x As String = Dts.Variables.Item(0).Value.ToString
Dts.TaskResult = Dts.Results.Success
End Sub