c# - 如果文件不存在,试图让我的 SSIS 继续运行

标签 c# visual-studio ssis

因此,我正在运行 SSIS(通过 VS),当我的客户没有每天发送准确的文件时,我有两个部分挂断了我。我有一个删除旧文件的任务,然后将当前文件重命名为以 _OLD 结尾的文件名。

问题是:如果其中的文件不完全相同,它就会崩溃,导致整个过程失败。

一个例子: 客户在星期一发送文件:姓名、地址、年级、学校 同一个客户,在星期二发送:姓名、地址、学校

由于成绩文件不存在,它仍被重命名为 Grades_OLD,但 SSIS 失败。

脚本是:

del Names_OLD.csv
bye

这将转到重命名脚本:

ren Names.csv Names_OLD.csv
bye

然后将继续地址,做同样的事情。令人非常沮丧的是,当第二天单个文件不存在时,这些失败,而且似乎没有必要。

我们有两个脚本可以生成要处理的存档数据:

public void Main()
{
Dts.Variables["ARCHIVEFILE"].Value = Path.GetFileNameWithoutExtension(Dts.Variables["FTPFILE"].Value.ToString()) + "_OLD" + Path.GetExtension(Dts.Variables["FTPFILE"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}

public void Main()
{
/*PSFTP_DEL_script.txt
del %1
bye

PSFTP_REN_script.txt
ren %1 %2
bye
*/

var lineOut = String.Empty;
var File1 = Dts.Variables["User::FTPWORKINGDIR"].Value.ToString() + "\\SSIS_PSFTP_DEL_script.txt";
var File2 = Dts.Variables["User::FTPWORKINGDIR"].Value.ToString() + "\\SSIS_PSFTP_REN_script.txt";

lineOut = "del " + Dts.Variables["User::ARCHIVEFILE"].Value.ToString() + Environment.NewLine + "bye";
System.IO.File.WriteAllText(File1, lineOut);

lineOut = "ren " + Dts.Variables["User::FTPFILE"].Value.ToString() + " " + Dts.Variables["User::ARCHIVEFILE"].Value.ToString() + Environment.NewLine + "bye";
System.IO.File.WriteAllText(File2, lineOut);            

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

研究它并没有真正提供任何帮助,只是让我回到我现在所在的地方。

最佳答案

尝试对每个可以处理的文件使用 foreach 循环,并将文件的所有处理都放在其中。并且不要在 foreach 循环之间放置任何优先级约束。

这将处理存在的文件,当其他文件不存在时不会失败。

foreach 循环本质上是检查文件是否存在。

这假定您不需要所有文件来正确处理它们。

关于c# - 如果文件不存在,试图让我的 SSIS 继续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959164/

相关文章:

c# - 使用多个参数启动任务的标准做法是什么

c# - NLog with AutoFac - 如何给记录器名称

asp.net - Visual Studio 中的 FTPS 发布失败,结果为 "Secure connection was closed by the remote connection end."

c++ - Visual C++ 2012 中的编译器错误? (乱七八糟的跳转地址)

sql-server - SSIS 输出列

SSIS,在脚本任务中输出空作为列值

c# - 无法访问ASPNETDB.mdf

c# - 闪烁游戏对象

c++ - Visual Studio 在转换为 2013 的项目上使用较旧的 2012 编译器

c# - 在 C# 中刷新 Excel 工作表