在SSIS导出程序包中,如何重命名带有时间戳的目标excel文件?

时间:2019-01-17 18:27:47

标签: sql excel ssis

在SSIS导出程序包中,如何重命名带有时间戳的目标excel文件?

我将Excel作为目标文件。如何重命名带有后缀的时间戳记的目标文件?

例如myfile_010120191100.xls

生成动态文件名将有助于我们避免覆盖。

3 个答案:

答案 0 :(得分:2)

在变量窗格中为FileName创建一个变量。

您可以使用表达式来构建这样的文件名:

"FilePathHere\FileName_" +  (DT_WSTR,4)YEAR(GETDATE()) + "" +
RIGHT("0" + (DT_WSTR,2)MONTH(GETDATE()), 2) + "" +
RIGHT("0" + (DT_WSTR,2)DAY( GETDATE()), 2) + 
"_" + Right("0" + (DT_STR,2,1252) DatePart("hh",getdate()),2) +
Right("0" + (DT_STR,2,1252) DatePart("mi",getdate()),".xlsx"

您可以单击“评估表达式”以确保其有效并提供所需的路径。

然后在平面文件连接管理器中转到属性,然后单击表达式->连接字符串。

在这里,您为文件名选择上面的变量名。

添加注释: 在表达式中,它在月份的字符串上执行RIGHT(“ 0”..。因此,如果它是1位数的月份,它将在其前面附加一个0(其余部分相同),因此它们始终为2数字。

答案 1 :(得分:2)

我几天前才这样做:

对“重命名文件”操作使用文件系统任务编辑器。在下图中,我有一个名为FilePathTargetCopy的变量,该变量的编码类似于C:/Users/MyUser/Desktop/aaa.xlsx。 TEST_Copy是具有“创建文件”操作的“文件连接管理器”。

创建一个类似的File连接,转到其属性,并添加带有以下内容的ConnectionString表达式:

REPLACE(@[User::FilePathTargetCopy],".xlsx","")+"-"+
RIGHT("0" + (DT_STR,4,1252) DatePart("yyyy",getdate()),4)+"-"+
Right("0" + (DT_STR,4,1252) DatePart("m",getdate()),2) +"-"+
Right("0" + (DT_STR,4,1252) DatePart("d",getdate()),2) + ".xlsx"

然后,使用OverWrite = true将其设置为DestinationConnection,如下所示。

enter image description here

答案 2 :(得分:2)

我知道我来晚了,但是在日期时间和设置表达式与使用变量时,我总是使用脚本任务来设置变量。我发现跟随变量比较容易,因为表达式似乎在逻辑中迷失了。

此表应为您提供帮助:

C#编程中的日期和时间格式

Format                                          E.g. Result
DateTime.Now.ToString("MM/dd/yyyy hh:mm tt")    05/29/2015 05:50 AM
DateTime.Now.ToString("MM/dd/yyyy H:mm")        05/29/2015 5:50
DateTime.Now.ToString("MM/dd/yyyy h:mm tt")     05/29/2015 5:50 AM
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")    05/29/2015 05:50:06