【发布时间】:2011-08-02 14:14:43
【问题描述】:
如何在 SSIS 中使用 foreach 循环容器更改平面文件路径
我有一个位于 c:\sourcefile 下的平面文件,该文件的名称是“Flat(Date)” 例如 Flat01aug2011.csv 并且每天它都是由最近的日期生成的,所以我需要总是拿起新文件并将其传递给平面文件目标, 那么我怎样才能遍历文件夹并获取最近日期的新文件.???
【问题讨论】:
标签: ssis
如何在 SSIS 中使用 foreach 循环容器更改平面文件路径
我有一个位于 c:\sourcefile 下的平面文件,该文件的名称是“Flat(Date)” 例如 Flat01aug2011.csv 并且每天它都是由最近的日期生成的,所以我需要总是拿起新文件并将其传递给平面文件目标, 那么我怎样才能遍历文件夹并获取最近日期的新文件.???
【问题讨论】:
标签: ssis
以下给定链接中的示例显示了如何循环访问给定扩展名的文件并使用数据流任务将它们加载到数据库中。
该示例加载 .csv 文件。该包使用Foreach loop container 循环文件,循环容器中有Data Flow task。数据流任务包含一个平面文件源,该文件源会根据正在循环的文件而更改。这是通过更改平面文件连接管理器路径来完成的。
How do I move files to an archive folder after the files have been processed?
这是一个示例,它遍历给定目录中的目录列表,并使用 Script Task 和 Foreach 循环容器选择最近创建的文件夹。您需要使用类似的逻辑来选择最近创建的文件。
How do I pick the most recently created folder using Foreach loop container in SSIS package?
希望对您有所帮助。
更新:
创建两个字符串数据类型变量,即DirPath 和FilePath。将值 C:\backup\ 设置为变量 DirPath。不要给变量FilePath设置任何值。
选择变量FilePath,然后按F4查看属性。将EvaluateAsExpression 属性设置为True,并将Expression 属性设置为@[User::DirPath] + "Source" + (DT_STR, 4, 1252) DATEPART("yy" , GETDATE()) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)
【讨论】:
在 SSIS 中,您可以使用“ForEach Loop”容器并将枚举器设置为文件名。对于每个循环容器都有属性,您可以在其中提供文件夹位置和文件名格式和扩展名。
使用 foreach 循环容器,您也可以根据文件名处理多个文件。
请参阅以下链接中的教程。 http://www.sql-programmers.com/SQLResources/SQLServerIntegrationServiceSSIS/ForEachLoopContainer.aspx
【讨论】: