【问题标题】:How to use if else with flat file connection Expression in SSIS?如何在SSIS中使用带有平面文件连接表达式的if else?
【发布时间】:2011-09-19 08:32:54
【问题描述】:

我有一个 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

否则就像我在上面的表达式中所做的那样,就像昨天一样......

【问题讨论】:

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

标签: ssis


【解决方案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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2014-09-02
    • 2019-08-30
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多