首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SSIS重命名文件时,文件扩展名出现在正确的位置

SSIS重命名文件时,文件扩展名出现在正确的位置
EN

Stack Overflow用户
提问于 2019-05-19 13:07:44
回答 1查看 1.1K关注 0票数 2

我需要重命名变量@FilePath中包含的文件,但我面临的问题是扩展名,我不知道如何才能获得csv文件扩展名之前的日期。我怎么才能绕过这个问题呢?

以下是当前变量值的计算方式:

代码语言:javascript
复制
User::FilePath  {C:\\SSIS\\Files\\Template.csv} String

User::FilePathRename    {C:\\SSIS\\Files\\Template.csv_19_05_2019_14_39_07.csv} String

FilePath具有以下表达式:

代码语言:javascript
复制
@[User::SourceFolder] + "\\" +  @[User::FileName]

SourceFolder是ForEach循环搜索和读取每个.csv文件的文件夹。

FilePathRename具有以下表达式:

代码语言:javascript
复制
@[User::FilePath] + "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , @[User::FileDate]), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , @[User::FileDate]), 2)
+ "_"
+ (DT_STR, 4, 1252) DATEPART("yyyy" , @[User::FileDate])
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[User::FileDate]), 2) 
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[User::FileDate]), 2) 
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[User::FileDate]), 2)
+ ".csv"

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 23:39:27

SSIS表达式方法

您可以使用TOKENTOKENCOUNT来实现此目的,请尝试以下表达式:

代码语言:javascript
复制
@[User::SourceFolder] + "\\" 
+  TOKEN(@[User::FileName], ".", 1) 
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , @[User::FileDate]), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , @[User::FileDate]), 2)
+ "_"
+ (DT_STR, 4, 1252) DATEPART("yyyy" , @[User::FileDate])
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[User::FileDate]), 2) 
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[User::FileDate]), 2) 
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[User::FileDate]), 2)
+ ".csv"

脚本任务方法

但是,如果文件名包含点(例如:filename.1.xml__),则此表达式可能不准确,我更喜欢使用脚本任务来实现这一点,使用以下代码行:

代码语言:javascript
复制
DateTime FileDate = (DateTime)Dts.Variables["User::FileDate"].Value;
string oldFile = Dts.Variables["User::FilePath"].Value.ToString();
string newFile;
newFile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(oldFile),System.IO.Path.GetFileNameWithoutExtension(oldFile)) + "\\" + FileDate.ToString("_dd_MM_yyyy_HH_mm_ss") + ".csv";
Dts.Variables["User::FilePathRename"].Value = newFile;

参考文献

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56204916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档