web-dev-qa-db-ja.com

ファイルがフォルダーに存在するかどうかを確認するSSISスクリプトタスク

SSISの特定のフォルダーにファイルが存在するかどうかを確認したい。どうすればこれを達成できますか?

11
user1429135

変数:

フォルダー-文字列-C ::\Temp \

ファイル-文字列-1.txt

fileExists-ブール値-False

public void Main()
{
    string folder = Dts.Variables["User::folder"].Value.ToString();     //@"C:\temp\";
    string file = Dts.Variables["User::file"].Value.ToString();         //"a.txt";
    string fullPath = string.Format(@"{0}\{1}", folder, file);

    Dts.Variables["User::fileExists"].Value = File.Exists(fullPath);

    Dts.TaskResult = (int)ScriptResults.Success;
}
10
Anoop Verma

Foreach Loop Containerを使用して、すべてのアイテムをそこに配置するだけです。ファイルが存在する場合は実行され、存在しない場合は実行されません。非常に簡単:)

6
Andrey Morozov

「out」変数を持つ代わりに、Dts.TaskResultファイルが存在するかどうかに基づきます。ファイルが存在しない場合、以下のスニペットはスクリプトタスクに失敗します。 (ロギングが有効な場合、ログエントリも作成されます。)

public void Main()
{
    string fileName = Dts.Variables["User::sourcePath"].Value.ToString() + Dts.Variables["User::fileName"].Value.ToString();

    if (File.Exists(fileName))
    {
        Dts.TaskResult = (int)ScriptResults.Success;
    } 
    else 
    {
        Dts.Log(string.Format("File {0} was not found.",fileName),0,null);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }

}
2
RubberDuck

このチェックを実行できるSSIS内のネイティブタスクはありませんが、スクリプトタスクを使用してこれを実現できますが、それを実現するために必要な簡単な手順については、次のリンクを確認することをお勧めします。

http://www.bidn.com/blogs/DevinKnight/ssis/76/does-file-exist-check-in-ssis

http://sqlmag.com/sql-server-integration-services/simple-effective-way-tell-whether-file-exists-using-ssis-package

1
StackTrace