SSIS脚本任务,用于检查文件是否存在于文件夹中
我想检查SSIS中特定文件夹中是否存在文件。 我怎么能做到这一点?
变量:
folder – string – C :: \ Temp \
file – string – 1.txt
fileExists – boolean – 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; }
您可以使用Foreach Loop Container
,只需将所有项目放入其中即可。 如果文件存在则执行,否则不执行。 非常简单 :)
SSIS中没有可以执行此检查的本机任务,但您可以使用脚本任务完成此操作,但我建议您检查以下链接以了解实现该操作所需的简单步骤。
http://www.bidn.com/blogs/DevinKnight/ssis/76/does-file-exist-check-in-ssis
作为具有“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; } }