我有一个包,它通过一个文件夹及其子文件夹运行来获取客户端数据。协议已更改,现在客户每次都会将其数据发布到不同的文件夹名称中。我想知道是否可以在主文件夹上执行 foreach 循环并排除特定文件夹,例如archive
.
我没有编写脚本的知识,所以我想知道 SSIS 是否可以在没有脚本的情况下做到这一点。
使用执行脚本任务
使用以下方法获取已过滤的文件列表Execute Script Task
在进入 Loop 之前并循环使用 ForEach Loop 容器(Ado 枚举器)
- 你必须有一个SSIS变量(ex:
User::FilesList
)与类型System.Object
(范围:包装)
- Add an
Execute Script Task
在 foreach 循环容器之前并添加User::FilesList
as a 读写变量
-
在脚本中写入以下代码:
Imports System.Linq
Imports System.IO
Imports System.Collections.Generic
Public Sub Main()
Dim Directory as String = "C\Temp"
Dim strSubDirectory as String = Directory & "\New Folder"
Dim lstFiles As New List(Of String)
lstFiles.AddRange(Directory.GetFiles(Directory, "*.*", SearchOption.TopDirectoryOnly).Where(Function(x) Not x.Contains(strSubDirectory)).ToList)
Dts.Variables.Item("FilesList").Value = lstFiles
Dts.TaskResult = ScriptResults.Success
End Sub
在 For Each Loop 容器中,选择枚举类型为From variable Enumerator
并选择FilesList
变量作为源
屏幕截图
![enter image description here](https://i.stack.imgur.com/7KGjQ.png)
![enter image description here](https://i.stack.imgur.com/dA6mW.png)
![enter image description here](https://i.stack.imgur.com/4qL9c.png)
使用表达式任务
更详细的可以参考我在下面链接中的回答(这是一个类似的案例)SSIS 集合中的通配符{不包括}名称 xlsx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)