SSIS脚本任务:检查文件夹中是否存在文件

11
我想从SSIS检查特定文件夹中是否存在文件。我该如何实现?

我希望能够从SSIS检索指定文件夹中的文件是否存在。该如何实现?


1
你可以将此作为起点。https://dev59.com/PWs05IYBdhLWcg3wNPI3 - Anoop Verma
我正在使用以下代码: Dts.Variables("FileExists").Value = File.Exists(Dts.Variables("FileLocation").Value) 其中,FileExists是一个布尔变量,“FileLocation”是一个带有文件路径的字符串变量。 尽管文件存在于文件夹中,但仍然返回False值。 - user1429135
只是好奇下面给出的解决方案对您是否有用,以及您是否能够解决问题。您的反馈对我和未来遇到类似问题的访问者都将有所帮助。谢谢。 - Anoop Verma
4个回答

11

变量:

folder - 字符串 - C::\Temp\

file - 字符串 - 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;
}

1
我尝试了上面的答案,但在我们的环境中运行ssis时出现了错误。目标调用引发了异常。 - user2756589
请确保这些变量被传递到脚本中;文件夹和文件为只读,fileExists为可读写。 - Anoop Verma

6
您可以使用 ForEach Loop Container 并将所有项目放入其中。如果文件存在,它将被执行;如果不存在,则不会执行。非常简单 :)

非常好!我正在寻找一些简单易行且能够正常工作的东西。 - Vladimir

3
作为“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;
    }

}

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接