我有一个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
或者像昨天那样采取我在上面表达中所做的事情......
答案 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天。