在ssis中动态生成上个月最后一天的文件

Posted

技术标签:

【中文标题】在ssis中动态生成上个月最后一天的文件【英文标题】:dynamically generate file with last day of previous month in ssis 【发布时间】:2013-03-25 05:25:34 【问题描述】:

我需要使用 SSIS 生成一个包含每月最后一天的文件。我正在使用 SQL 获取它。

DECLARE @mydate DATETIME
SELECT @mydate = '03/21/2013'
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)),@mydate),112) 
--20130228

我不知道如何把它放在连接管理器的 SSIS 表达式中。 文件名类似于'ABC_20130228.txt'

【问题讨论】:

【参考方案1】:

为什么要使用脚本任务?为什么不使用这里描述的表达式:

Add datestamp to a .txt file in an SSIS Package?

【讨论】:

【参考方案2】:

我会将日期分配给 SSIS 中的变量,然后将该变量传递给构建文件名并将其放入输出变量的脚本任务。然后,您可以在该输出文件的 Connection Manager 属性中的 Expressions 属性组下的 ConnectionString 属性中分配输出变量,以使用该变量的值作为您的文件名。

总结:

    使用脚本任务并将文件名中要使用的日期作为只读变量作为字符串类型传递给它,以便于操作。 为脚本任务分配一个读/写变量来存储您的文件名。

    在脚本任务中创建文件名。 变量名为:User::DataFile, User::MaxDate 即字符串数据文件名; String DateToUse;

    DateToUse= (String) Dts.Variables["MaxDate"].value; DataFileName="ABC_"+Convert.ToString((Convert.ToDateTime(DateToUse)).Year)+Convert.ToString((Convert.ToDateTime(DateToUse)).Month)+Convert.ToString((Convert.ToDateTime(DateToUse)) .Day)+".txt"; Dts.Variables["DataFile"].value=DataFileName;

    将连接管理器属性的表达式部分中的变量分配给 CONNECTIONSTRING 属性。

应该这样做。如果您需要特定路径,则将在第 4 步中将其连接到属性和变量上。

【讨论】:

你可以这样做。我只是使用了这段代码,因为我还必须出于其他原因创建多个文件名,并且我必须进行一些其他操作。我从该例程中提取了命名部分。

以上是关于在ssis中动态生成上个月最后一天的文件的主要内容,如果未能解决你的问题,请参考以下文章

SSIS动态删除分区

在c#中获取上个月的第一天和最后一天的日期

Java中获取去年最后一天的日期

Easyui获取上个月最后一天的日期,以及获取当前时间的前一天日期

使用 SSIS 将具有多个表的单个 mdb 文件动态导入 SQL Server?

SQL语句 如何取得指定月份的最后一天的日期