0

私はSSISを初めて使用しますが、

30分ごとに、ソースディレクトリに1つまたは複数のファイルが届きます

これらのファイルをループして、.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;
}

ただし、ファイルに拡張子が付いている場合でも、.dat0を返し、アラートを送信しています。

4

1 に答える 1

1

たぶん、あなたは書くつもりだった...

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

それ以外の場合は、true と評価されることはありません。

また、おそらく何らかのループが必要な場合があります。現在の構造は、すべてのファイルに一度にアクセスしようとしています (そして、まったくそうしていません)。

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タイプのみが含まれ、他のタイプが含まれていない場合にのみFileExistを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 に答える