如何验证基于特定日期范围的文件名?

如何验证基于特定日期范围的文件名?

问题描述:

我有一个SSIS包我正在努力。文件名是:ap_alpha100_p1_20171013_123456.txt如何验证基于特定日期范围的文件名?

我只想要包裹拿起那个文件,如果日期在过去几天内。例如。

ap_alpha100_p1_20171013_123456.txt是正确的,因为20171013 = 2017年10月13日

ap_alpha100_p1_20170613_123456.txt不正确,因为20170613 = 2017年6月13日

我很新的SSIS并试图谷歌类似的问题,但我的研究让我想不起来。

试试这个办法:

  1. 创建从-每个 循环容器中的变量var_fileName来存储文件名。
  2. 创建变量var_flag将设置为 如果日期在本周内(可配置),则为true,否则为false。

  3. ForEach file enumerator和变量映射设置为var_fileName创建一个for-each循环容器。 u1

  4. 在容器内创建一个script task。读取变量:var_fileName。读写变量:var_flag。

  5. 将以下代码放在脚本任务(C#)中。

     Dts.Variables["User::var_flag"].Value = false; 
    
         String a; 
         a = Dts.Variables["User::var_fileName"].Value.ToString(); //output: ap_alpha100_p1_20171010_123456 
         String b; 
         b = a.Substring(15, 8); //output: 20171010 
    
    
         string result = DateTime.ParseExact(b, "yyyyMMdd", 
             CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); //output: 2017-10-10 
    
         DateTime oDate = Convert.ToDateTime(result); //convert string to datetime 
         DateTime Today = DateTime.Today; 
         DateTime StartDate = Today.AddDays(-((int)Today.DayOfWeek)); 
         DateTime EndDate = StartDate.AddDays(7).AddSeconds(-1); 
    
         if (oDate > StartDate && oDate < EndDate) 
         { 
          Dts.Variables["User::var_flag"].Value = true; 
         } 
         else 
         { 
          Dts.Variables["User::var_flag"].Value = false; 
         } 
    

它应该是这样的(为了便于理解示出注释):

i2

  1. 现在简单地使用script taskData Flow Task之间的约束约束条件为@[User::var_flag] == TRUE
  2. 逻辑是:如果日期在本周之间,那么标志变为true,否则为false。在真实情况下,执行数据流任务。

开始=>