0

我是SSIS的新手,

每 30 分钟我将在源目录中收到一个文件或多个文件

我需要遍历这些文件并检查它是否具有.csv.dat扩展名:

  • 如果不是:向用户发送警报。
  • 如果是:执行包

编辑:我试过了;

Main()
{ 
    try
    {
        string[] filenames;
        filenames = Directory.GetFiles(@"C:Input_Data\");
        string FileExtension = Path.GetExtension("filenames");
        if (FileExtension == ".DAT" && FileExtension == ".csv") 
            Dts.Variables["FileExist"].Value = 1;
    }
    catch 
    { 
        Dts.Variables["FileExist"].Value = 0; 
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}

但即使文件存在.dat扩展名,它也会返回 0 并发送警报。

4

1 回答 1

1

也许你的意思是写...

if (FileExtension == ".DAT" || FileExtension == ".csv") 

否则它永远不会评估为真。

此外,您可能想要某种循环,您当前的结构正试图一次访问所有文件(甚至没有这样做)

filenames = Directory.GetFiles(@"C:\Input_Data\");
foreach(string filename in filenames)
{
    string FileExtension = Path.GetExtension(filename);
    if (FileExtension == ".DAT" || FileExtension == ".csv") 
        Dts.Variables["FileExist"].Value = 1;
}

编辑:

根据我认为您所说的,您希望 FileExist 仅在仅包含 DAT 和 CSV 类型且不包含其他类型时才等于 1,在这种情况下,您希望稍微反转逻辑。

filenames = Directory.GetFiles(@"C:\Input_Data\");
Dts.Variables["FileExist"].Value = 1;
foreach(string filename in filenames)
{
    string FileExtension = Path.GetExtension(filename);
    if (FileExtension != ".DAT" && FileExtension != ".csv") 
        Dts.Variables["FileExist"].Value = 0;
}
于 2012-08-13T19:31:48.007 回答