在使用SSIS Foreach循环容器时,如何在特定日期后传递文件

在使用SSIS Foreach循环容器时,如何在特定日期后传递文件,ssis,ssis-2012,foreach-loop-container,Ssis,Ssis 2012,Foreach Loop Container,当前创建了一个SSIS包,该包通过文件夹并根据文件名返回最新文件。我已经通过使用Foreach循环容器完成了这项工作 在测试中,它运行良好,我使用了大约20个文件,所有文件都运行良好。但是,当尝试将其放入实时环境中时,它将处理大约200多个文件,但由于旧文件发生了轻微的更改,所以失败了,这是我在第一次创建包时不知道的 我只需要从2020年3月1日起将文件带过,但无法从其位置删除旧文件 有没有一种方法,我可以改变包,只带回文件从这个日期起呢?如果是这样,我该怎么做 提前欢呼您可以使用文件属性获取要

当前创建了一个SSIS包,该包通过文件夹并根据文件名返回最新文件。我已经通过使用Foreach循环容器完成了这项工作

在测试中,它运行良好,我使用了大约20个文件,所有文件都运行良好。但是,当尝试将其放入实时环境中时,它将处理大约200多个文件,但由于旧文件发生了轻微的更改,所以失败了,这是我在第一次创建包时不知道的

我只需要从2020年3月1日起将文件带过,但无法从其位置删除旧文件

有没有一种方法,我可以改变包,只带回文件从这个日期起呢?如果是这样,我该怎么做


提前欢呼

您可以使用文件属性获取要处理的最新文件:

var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = directory.GetFiles()
             .OrderByDescending(f => f.LastWriteTime)
             .First();
您还可以在其中添加一个位置:

var myFile = directory.GetFiles()
             .Where(f=>f.LastWriteTime>=DateTime.Parse("1/3/2020"))
             .OrderByDescending(f => f.LastWriteTime)
             .First();

20200301在文件名中吗?不,只是SQL中的日期,删除以避免进一步的混淆我不在后面-如果日期不在文件名中,并且文件的格式在历元日期之间发生了更改,您如何区分哪些在处理范围内,哪些在范围外?没关系,我最后对其进行了排序,我为它创建了一个表以进行检查,并手动将所有文件名插入其中,因此它现在将跳过所有文件名,转到需要的文件。我也很抱歉,我没有正确阅读您的评论,日期在文件名中,因此例如,文件名的格式为“file_name_2017-01-01”,因此我知道需要跳过哪些文件,但是我不知道该怎么做,但是检查文件是否已加载的表已经运行谢谢@KeithL,我现在创建的工作正常,但是当我有更多的时间时,我会测试一下!谢谢你的发帖