具有XML配置的SSIS包,动态文件位置源

时间:2015-01-09 20:23:32

标签: sql-server ssis dts

我有一个SSIS包从目录中获取文件并将其导入数据库,非常简单。唯一的问题是输入文件是根据当前日期命名的,例如\ path \ to \ file \ filename_010115.txt,其中010115是2015年1月1日。

我使用自定义bat文件调用此包,该文件将Flat File Source的连接管理器设置为当前日期格式化文件名并直接传递给dtexec.exe;但是,我们的环境要求我们使用XML配置文件而不是bat文件。有没有一种简单的方法来设置文件源"前缀"在xml中,在尝试获取文件之前附加日期格式的文件名?

1 个答案:

答案 0 :(得分:0)

您是否考虑重新架构您的方法?您无法使用配置优雅地执行此操作 - 无论是XML,表,环境还是注册表项。在最简单的情况下,一个表,在您甚至可以启动SSIS包之前,进程需要更新该表以使用当前日期。像SQL Agent这样的调度工具可以运行SQL命令。如果您正在使用XML路由,那么您正在查看一个小小的应用程序或PowerShell命令来修改您的配置文件。同样,这将需要每天在SSIS包开始之前修改您的文件,因为它在开始时设置一次值,而不再参考配置源。

可以使用SSIS中的表达式将当前日期用作平面文件源的连接字符串的一部分,但是如果您需要处理超过一天的时间。 s文件或重新处理昨天的文件,您需要手动重命名源文件或更改系统时钟,没有人会这样做。

更典型的方法是使用Foreach(文件)循环容器。将其指向源文件夹,找到与您的模式匹配的所有文件。我在这里假设你将处理过的文件移出同一个文件夹。 Foreach容器查找所有匹配的文件,并通过列表枚举将当前文件弹出为您选择的任何变量。

参见

上的工作示例