SQL Server Integration Services如何在.dtsConfig生成带当前日期的文件名
SSIS动态生成带日期后缀CSV文件名实现方案
你当前的需求是为平面文件目标生成的CSV文件名末尾追加yyyyMMdd格式的当前日期,原有.dtsConfig配置内容如下:
<Configuration ConfiguredType="Property" Path="\Package.Connections[csv_conf].Properties[ConnectionString]" ValueType="String"> <ConfiguredValue>C:\Users\Desktop\SSISfacturacion\test.csv</ConfiguredValue> </Configuration>
可通过以下步骤实现:
实现步骤
- 第一步:创建动态路径变量
在SSIS包中新建一个字符串类型的包级变量,命名为DynamicCSVFilePath,为变量添加如下表达式:
该表达式会自动拼接当前日期,月份/日期不足两位时自动补0,生成符合要求的文件路径。点击表达式编辑框的「计算」按钮,可直接验证生成的路径是否符合预期。"C:\\Users\\Desktop\\SSISfacturacion\\test-" + (DT_WSTR, 4)YEAR(GETDATE()) + RIGHT("0" + (DT_WSTR, 2)MONTH(GETDATE()), 2) + RIGHT("0" + (DT_WSTR, 2)DAY(GETDATE()), 2) + ".csv" - 第二步:绑定平面文件连接管理器属性
找到你已经创建的csv_conf平面文件连接管理器,右键选择「属性」,在属性面板中找到Expressions选项,点击右侧的省略号按钮打开表达式编辑器:- 左侧属性列选择
ConnectionString - 右侧表达式列选择刚才创建的
DynamicCSVFilePath变量
保存设置后,连接管理器的文件路径会自动跟随变量值动态变化。
- 左侧属性列选择
- 第三步:调整dtsConfig配置(可选,保留配置文件修改能力)
如果你需要保留配置文件修改根路径的能力,不需要每次改路径都修改SSIS包,可以拆分变量:- 新增一个字符串类型变量
BaseCSVFolder,专门用来从配置文件取值 - 调整
DynamicCSVFilePath的表达式为:@[User::BaseCSVFolder] + "test-" + (DT_WSTR, 4)YEAR(GETDATE()) + RIGHT("0" + (DT_WSTR, 2)MONTH(GETDATE()), 2) + RIGHT("0" + (DT_WSTR, 2)DAY(GETDATE()), 2) + ".csv" - 修改你的.dtsConfig配置内容如下,直接配置根路径即可:
<Configuration ConfiguredType="Property" Path="\Package.Variables[User::BaseCSVFolder].Properties[Value]" ValueType="String"> <ConfiguredValue>C:\Users\Desktop\SSISfacturacion\</ConfiguredValue> </Configuration>
- 新增一个字符串类型变量
注意事项
- 表达式中的反斜杠需要双写转义,否则会出现语法错误
- 部署到生产环境后,需要确认SSIS运行账号对目标文件夹有读写权限
内容的提问来源于stack exchange,提问作者Alessandro
相关产品推荐
相关产品推荐

