动态文件夹 SSIS
Dynamic Folder SSIS
我正在创建一个包,它通过几个文件夹路径并加载 excel 个文件。 excel 个文件的文件路径如下。这些文件位于 "a" 文件夹中,该文件夹的名称每年都相同,但是 "xy*" 文件夹名称会根据年份而变化。因此,我希望 SSIS 通过搜索具有 "a" 文件夹的 H 驱动器来查找 excel 文件。我查看了 System.IO.Directory.GetDirectories(string, string,SearchOptions) 但这只给了我第一个子文件夹。例如 H:\x\xy2017。任何帮助深表感谢。
H:\x\xy2017\z\xy2017\a
H:\x\xy2017\z\xy2017\a
H:\x\xy2018\z\xy2018\a
这是我在脚本任务中用于递归循环遍历文件夹的 C# 代码。我不确定我做错了什么。
Dts.Variables["User::varFolderPath1"].Value = Directory.GetFiles(@"S:\HEDIS", "*DMHM Lead Results*", SearchOption.AllDirectories);
foreach (Object obj in Dts.Variables["User::varFolderPath1"].Value.ToString())
{
Console.WriteLine(Dts.Variables["User::varFolderPath1"].Value.ToString());
}
使用"Foreach Loop Container"。
1 转到 "Collection" 并选择 "Foreach File Enumerator"。
2 它会询问包含文件的文件夹,在这里你必须选择你的主文件夹
即你的情况 (H:\x)。
3 然后您需要选中“遍历子文件夹”复选框,这样就可以了。
这是脚本任务答案。
string root = @"S:\directory\";
string folder = "root folder";
DateTime lookbackDate = DateTime.Now.AddMonths(-6);
string messageText = "";
messageText += String.Format("We're looking for files that have been made since {0}", lookbackDate);
MessageBox.Show(messageText); messageText += "\n";
messageText += ("Starting directory search now\n");
MessageBox.Show(messageText); messageText += "\n";
string[] dirs = Directory.GetDirectories(root, folder, SearchOption.AllDirectories);
foreach (string dir in dirs)
{
messageText += String.Format("Directory found! {0}", dir);
MessageBox.Show(messageText); messageText += "\n";
foreach (string file in Directory.GetFiles(dir))
{
DateTime filedate = File.GetCreationTime(file);
string fname = Path.GetFileName(file);
if (filedate >= lookbackDate)
{
messageText += String.Format("MATCH! {0} - created {1}", fname, filedate);
MessageBox.Show(messageText); messageText += "\n";
}
else
{
messageText += String.Format("TOO OLD! {0} - created {1}", fname, filedate);
MessageBox.Show(messageText); messageText += "\n";
}
}
}
messageText += ("\nDirectory search complete!");
MessageBox.Show(messageText);
我正在创建一个包,它通过几个文件夹路径并加载 excel 个文件。 excel 个文件的文件路径如下。这些文件位于 "a" 文件夹中,该文件夹的名称每年都相同,但是 "xy*" 文件夹名称会根据年份而变化。因此,我希望 SSIS 通过搜索具有 "a" 文件夹的 H 驱动器来查找 excel 文件。我查看了 System.IO.Directory.GetDirectories(string, string,SearchOptions) 但这只给了我第一个子文件夹。例如 H:\x\xy2017。任何帮助深表感谢。
H:\x\xy2017\z\xy2017\a
H:\x\xy2017\z\xy2017\a
H:\x\xy2018\z\xy2018\a
这是我在脚本任务中用于递归循环遍历文件夹的 C# 代码。我不确定我做错了什么。
Dts.Variables["User::varFolderPath1"].Value = Directory.GetFiles(@"S:\HEDIS", "*DMHM Lead Results*", SearchOption.AllDirectories);
foreach (Object obj in Dts.Variables["User::varFolderPath1"].Value.ToString())
{
Console.WriteLine(Dts.Variables["User::varFolderPath1"].Value.ToString());
}
使用"Foreach Loop Container"。
1 转到 "Collection" 并选择 "Foreach File Enumerator"。
2 它会询问包含文件的文件夹,在这里你必须选择你的主文件夹
即你的情况 (H:\x)。
3 然后您需要选中“遍历子文件夹”复选框,这样就可以了。
这是脚本任务答案。
string root = @"S:\directory\";
string folder = "root folder";
DateTime lookbackDate = DateTime.Now.AddMonths(-6);
string messageText = "";
messageText += String.Format("We're looking for files that have been made since {0}", lookbackDate);
MessageBox.Show(messageText); messageText += "\n";
messageText += ("Starting directory search now\n");
MessageBox.Show(messageText); messageText += "\n";
string[] dirs = Directory.GetDirectories(root, folder, SearchOption.AllDirectories);
foreach (string dir in dirs)
{
messageText += String.Format("Directory found! {0}", dir);
MessageBox.Show(messageText); messageText += "\n";
foreach (string file in Directory.GetFiles(dir))
{
DateTime filedate = File.GetCreationTime(file);
string fname = Path.GetFileName(file);
if (filedate >= lookbackDate)
{
messageText += String.Format("MATCH! {0} - created {1}", fname, filedate);
MessageBox.Show(messageText); messageText += "\n";
}
else
{
messageText += String.Format("TOO OLD! {0} - created {1}", fname, filedate);
MessageBox.Show(messageText); messageText += "\n";
}
}
}
messageText += ("\nDirectory search complete!");
MessageBox.Show(messageText);