SSIS通过替换部分文件名重命名文件

时间:2018-02-02 19:14:42

标签: sql sql-server ssis script-task foreach-loop-container

Remove the circled part of the filename

文件夹x中有两种类型的文件:\ abc \ sales \ 一个是压缩的.gz文件,另一个是未压缩的.txt文件 我的目标是重命名所有“.txt”文件:(保持.gz文件不变) 例如。 “accn_adjustments_201802020147.txt”

下划线之后的部分基本上是日期和时间,时间并不总是“0147”,它可能是“0148”或“0210”或其他任何东西,但总是4位数...... 我的任务是删除最后4位数,以便最终结果看起来像“accn_adjustments_20180202.txt”

我认为 - 每个循环或脚本任务都可以帮助我解决这个问题,但我不知道该怎么做。

感谢任何帮助,提前感谢...

1 个答案:

答案 0 :(得分:1)

步骤1)将Foreach Loop Container添加到包中(将Foreach循环容器从SSIS工具箱中的容器拖到包工作区)。

步骤2)双击Foreach循环以打开编辑器

步骤3)点击左侧菜单上的收藏,然后将Enumerator属性更改为Foreach File Enumerator

步骤4)选择您的文件夹:x:\abc\sales\

步骤5)将文件的属性更改为*.txt

此外,您还需要:

步骤6)将File System Task从工具箱拖到Foreach Loop Container

步骤7)双击File System Task并将操作更改为Rename File

步骤8)在任务上设置源和目标连接(我假设您知道如何创建这些连接)。

现在容器只会遍历文件夹中的文本文件。

这可以通过使用Varachbles,Foreach循环和表达式的变量映射部分来扩展,以动态修改文件名并更改文本文件数据源的连接属性。虽然我并不是100%清楚地知道你还需要什么,但至少应该回答这个问题来帮助你入门。

有助于重命名过程的一些额外阅读:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/6c6e4fba-be40-4c53-ab8e-348ccd39c687/rename-file-using-file-system-task-editor?forum=sqlintegrationservices