我有一个包含大约10,000个PDF文档的SourceFolder文件夹。
我有一个列表(FileList.csv),其中包含大约1,000个文件的名称。
我想将该列表中的文件从它们所在的文件夹移动到我创建的空文件夹(DestFolder)。我正在使用SSIS 2013。
作为一个概念验证,我使用ForEachItem枚举器成功配置了一个ForEachLoop容器,其中包含一个FileSystem任务,并移动了两个文件。
但是,我必须在ForEachLoop编辑器中手动输入文件名 - >收藏 - >枚举器配置窗口。
我为FileName,SourceFolder和FullSourcePath配置了变量,一切正常。
我的问题是 - 如何连接到平面文件以将文件名转换为变量?
我不允许发布图片,所以我会尝试解释我的尝试。
添加一个平面文件源和连接管理器,并使用CM Propoerties中的表达式将FileName变量分配给连接字符串(没有运气)
将FlatFile Source提供给RecordSet Destination并将结果集分配给ObjectVariable,并将ForEach循环容器配置更改为ForEach ADO枚举器,并将ObjectVariable分配给ADO源对象变量(没有运气)。
这似乎是一项如此简单的任务,我希望我遗漏了一些明显的东西。不包括图像的Aopologies。
答案 0 :(得分:0)
答案 1 :(得分:0)
我终于开始工作,并认为我会为可能面临同样问题的其他人发布我的解决方案。
我使用带有嵌入式查询的SQL任务直接从数据库中获取文件名列表。
我将它输入到一个内部有文件系统任务的ForEachLoop容器中。
我创建了以下变量:
连接经理
在 SQL任务编辑器中一般窗口:
在 SQL任务编辑器中ResultSet 窗口:
在 ForEach循环编辑器中|收藏窗口:
在 ForEach循环编辑器中|变量映射窗口:
在 ForEach循环编辑器属性:
中在文件系统任务编辑器中|一般窗口:
在文件系统任务属性窗口中:
现在,程序包将运行并为FileList中的每个文件名生成一个错误,该文件在源文件夹中没有匹配的文件,但它将运行并移动文件。
陷阱:
感谢大家的帮助。
答案 2 :(得分:0)
更快的方法来实现这一目标!
删除foreach循环任务。 在集合下选择Foreach文件枚举器。 文件夹是文件的位置。 c:\ SrcFiles保留完全限定,并放入.txt或任何文件扩展名 在变量映射下添加名为FileName字符串类型的变量,并确保它在包的范围内
将文件系统任务拖放到容器中 源变量是FileName 目标连接是您要移动到的位置。 d:\ ReceivedFiles 覆盖目的地=真 DelayValidation = True
瞧!