Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SSIS中将if-else与平面文件连接表达式一起使用?_Ssis - Fatal编程技术网

如何在SSIS中将if-else与平面文件连接表达式一起使用?

如何在SSIS中将if-else与平面文件连接表达式一起使用?,ssis,Ssis,我有一个SSI,它从.csv文件中获取数据并插入到sql表中 现在我的文件名是 连接字符串的平面文件属性和表达式为: @[User::Directory]+@[User::Filename]+“”+(DT_STR,41252)DATEPART(“yyyy”,getdate())+“-”+ 右(“0”+(DT_STR,41252)日期部分(“mm”,getdate()),2)+“-”+ 右键(“0”+(DT_STR,41252)DATEPART(“dd”,DATEADD(“day”,-1,GETD

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

现在我的文件名是

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

@[User::Directory]+@[User::Filename]+“”+(DT_STR,41252)DATEPART(“yyyy”,getdate())+“-”+
右(“0”+(DT_STR,41252)日期部分(“mm”,getdate()),2)+“-”+
右键(“0”+(DT_STR,41252)DATEPART(“dd”,DATEADD(“day”,-1,GETDATE()),2)+“.csv”

它给我的文件名是:
C:\mytempdata\ACCTMVCHNG\u CSV 2011-09-18.CSV

这是昨天

但是,当我在周一运行此程序包时,当前的文件仅用于周五,其名称将为
ACCTMVCHNG_CSV 2011-09-16.CSV

所以我想在这个表达式中使用if-else

比如,如果今天是星期一,那么使用星期五文件,我的意思是创建星期五的文件路径

如下:
C:\mytempdata\ACCTMVCHNG\u CSV 2011-09-16.CSV


或者像我在上面的表达式中所做的那样,把昨天当作过去…

如果我在星期二正确地理解了您的意思,那么您希望在星期一创建文件。在星期三,您希望在星期二创建文件。但是在周一,您不希望在周日创建文件,而是希望在周五创建文件

@[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"

试试这个表达。它扩展了你的条件。它再次使用带有“dw”参数的
DATEPART
函数,该参数返回一周中当前日期的序号。玩这个。(在我的情况下,星期一是一周的第一天)如果当前日期是星期一,则
DATEADD
函数add-3天。

帮助我所有发生的事情没有答案:(?