在ssis中将文件名添加到文件中

时间:2016-07-05 07:29:39

标签: date ssis

是否有任何表达式可以直接从表达式构建器中获取月份名称?

我应该动态添加文件名的月份名称。我目前正在使用" DATEPART"函数,我收到了月份号,但我想要月份名称。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

不 - 不幸的是没有。您有两种选择:

  1. 将SQL中的月份名称作为数据集的一部分或
  2. 返回
  3. 做一点疯狂的表达:
  4. (MONTH(yourDate) == 1 ? "January" : MONTH(yourDate) == 2 ? "February" : MONTH(yourDate) == 3 ? "March" : etc etc)

答案 1 :(得分:0)

SSIS表达式具有非常有限的功能集。如果我没记错的话,它提供了VBScript时可用的功能。即使在2016 according to the documentation中也没有字符串格式化功能,人们最终会连接字符串的各个部分。

您可以使用脚本步骤使用String.Format格式化日期并将结果存储在变量中,如[在脚本任务中使用变量](https://msdn.microsoft.com/en-us/library/ms135941.aspx)和this SO question中所示,例如:

var targetFolder=Dts.Variables["User::targetFolder"].Value;
var filePrefix=Dts.Variables["User::filePrefix"].Value;
var someDate=Dts.Variables["User::myDate"].Value;

var filePath= = String.Format(CultureInfo.InvariantCulture,"{0}_{1:MMMM}.txt",filePrefix,someDate);
var fullPath=Path.Combine(targetFolder,filePath);

Dts.Variables["User::filePath"].Value=fullPath;

脚本任务的优点是您可以使用所有.NET函数来格式化值(例如String.Format)和操作路径(例如Path.Combine,Path.GetFileNameWithoutExtension等)