如何在SSIS包中创建追加当前日期的文件并复制重命名Excel文件
嘿,你已经快搞定你的SSIS包了,用FileSystem Task来处理这个文件复制重命名的需求完全是正确的思路!我来给你一步步拆解具体怎么配置,确保能顺利生成带日期后缀的目标文件:
步骤1:创建动态文件名所需的SSIS变量
首先得设置几个变量来实现日期的动态拼接,这样每次运行包都会自动生成对应日期的文件名:
- 新建字符串类型的变量:
SourceFilePath:填写源文件的完整路径,比如C:\SourceDir\InboundScrapWeights.xlsxDestFolderPath:填写目标文件夹的路径,比如C:\TargetDir\(注意末尾要加斜杠)DestFileName:用表达式生成带日期的文件名,表达式内容如下:
这个表达式会生成类似"InboundScrapWeights_" + (DT_WSTR,4)YEAR(GETDATE()) + RIGHT("0" + (DT_WSTR,2)MONTH(GETDATE()),2) + RIGHT("0" + (DT_WSTR,2)DAY(GETDATE()),2) + ".xlsx"InboundScrapWeights_20240520.xlsx的格式,你可以右键变量选择「Evaluate Expression」验证格式是否正确DestFullPath:把目标文件夹和文件名组合起来,表达式为:@[User::DestFolderPath] + @[User::DestFileName]
步骤2:配置FileSystem Task
打开FileSystem Task的编辑器,按以下选项设置:
- Operation:选择
Copy file(这个操作可以直接完成复制+重命名,无需分开执行复制和改名) - SourceConnection:选择「
」,然后选择「Existing File」,直接关联到 @[User::SourceFilePath]变量(这样源路径更灵活,后续修改只需改变量) - DestinationConnection:同样选择「
」,选择「File」,然后关联到 @[User::DestFullPath]变量,这样目标路径和文件名就会动态生成 - OverwriteDestination:根据你的需求设置为
True或False——如果允许覆盖目标文件夹中同名的旧文件,就设为True
额外注意事项
- 如果你需要的不是当前系统日期,而是源文件的创建日期,那上面的
GETDATE()就不适用了。这种情况下,你需要用Script Task来读取源文件的创建时间,再赋值给DestFileName变量 - 务必确认SSIS包运行的账户拥有源文件的读取权限,以及目标文件夹的写入权限,避免运行时出现权限错误
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

