如何在SSIS中使用if平面文件连接表达式?

时间:2011-09-19 08:32:54

标签: ssis

我有一个SSIS从.csv文件中获取数据并插入到sql表中

现在我的文件名是

连接字符串的平面文件属性和表达式为:

@[User::Directory] + @[User::Filename]+" "+(DT_STR,4,1252)DATEPART( "yyyy" , getdate() ) +"-"+ RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , getdate() ), 2) +"-"+ RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , DATEADD("day", -1, GETDATE()) ), 2) +".csv"

给我的文件名如下:C:\mytempdata\ACCTMVCHNG_CSV 2011-09-18.csv

这是昨天的文件名

但是当我星期一运行这个包时,文件存在于周五,只有名称为ACCTMVCHNG_CSV 2011-09-16.csv

所以我想将if else用于此表达式

好像如果今天是星期一那么采取星期五文件我的意思是为星期五创建文件路径

像这样:C:\mytempdata\ACCTMVCHNG_CSV 2011-09-16.csv

或者像昨天那样采取我在上面表达中所做的事情......

1 个答案:

答案 0 :(得分:1)

如果我在星期二正确理解你,你想要在星期一创建该文件。星期三你想要在星期二创建的文件。但是星期一你不希望在星期日但星期五创建文件。

@[User::Directory] + @[User::FileName]+" "+
(DT_STR,4,1252)DATEPART("yyyy", getdate() ) +"-"+ 
RIGHT("0" + (DT_STR,4,1252)DATEPART("mm", getdate() ), 2) +"-"+ 
RIGHT("0" + (DT_STR,4,1252)DATEPART("dd", 
    DATEADD("day", DATEPART("dw", GETDATE()) == 1 ? -3 : -1, GETDATE()) ), 2) +".csv"

试试这个表达式。它扩展了你的条件。它再次使用DATEPART函数和“dw”参数,该参数返回当前星期几的序号。玩这个。 (在我的情况下,星期一是星期的第一天)如果当天是星期一,DATEADD功能会增加-3天。