我必须从文件夹(C:\ Users)中按顺序(首先是第一个文件)选择文件,文件名中包含时间戳。 例如,下面是我在C:\ Users \中的文件,时间戳在第一个下划线之后,即下面第一个文件中的20170126102806。我必须遍历文件并选择第一个文件,依此类推。所以在下面的5个文件中,20170123-000011_20170126101823_AAA是第一个文件。我如何在SSIS中执行此操作?
1.20170123-000011_20170126102806_AAA
2.20170123-000011_20170126103251_AAA
3.20170123-000011_20170126101823_AAA
4.20170123-000011_20170126103305_AAA
5.20170123-000011_20170126102641_AAA
答案 0 :(得分:0)
您可以采取两种方式:
我希望这有帮助。
答案 1 :(得分:0)
您可以在For Each循环中使用脚本任务。使用返回的文件名作为源来加载每次。
using System.IO;
public void Main()
{
string filePath = "D:\\Temp";
DirectoryInfo dir = new DirectoryInfo(filePath);
var files = dir.GetFiles("*_AAA");//Or from a variable
DateTime fileCreateDate1 = File.GetCreationTime(filePath + "\\" + files[0]);
if (files.Length >= 2)
{
for (int i = 1; i < files.Length; i++)
{
DateTime fileCreateDate2 = File.GetCreationTime(filePath+ "\\" + files[i]);
if (fileCreateDate1 < fileCreateDate2)
{
fileCreateDate1 = fileCreateDate2;
}
}
}
Dts.Variables["User::FileToLoad"].Value = fileCreateDate1;
Dts.TaskResult = (int)ScriptResults.Success;
}
您必须在加载文件后删除该文件,否则每次都会加载该文件,因为它是最旧或最新的文件。 可能有一个错误,但有类似的代码可行。如果需要的话就把它搞定。