我有一个与您的类似的 SSIS 包设置,除了它遍历 Microsoft Project 文件列表并将记录导入数据库。在 Foreach 循环容器中,它首先执行检查以查看文件是否存在。我将 FileName 的字符串变量和布尔变量 bolFileExists 传递给脚本。我知道您也在寻求验证文件格式是否正确,并且我猜测您可能能够应用类似于以下脚本任务代码的内容:
public void Main()
{
if (File.Exists(Dts.Variables["FileName"].Value.ToString()) )
{
Dts.Variables["bolFileExists"].Value = true;
}
else
{
Dts.Variables["bolFileExists"].Value = false;
}
}
以此为导向将有两条路径。第一个将应用表达式“@bolFileExists==True”,然后执行导入过程。另一个将应用表达式“@bolFileExists==False”并跳过该文件并允许处理以下文件。在我的表驱动的 SSIS 包中,对于这两个选项,导入状态是在列出正在导入的文件的表中定义的。我有近 40 个文件被导入,这使我可以运行查询以确定是否遗漏了任何文件,并在流程完成后发送的自动电子邮件中应用该查询。
至于不正确的格式,我的第一个建议是为用户提供一个模板,以便他们遵循其中一个工作表中的说明。之后,您可以尝试应用一个临时表或 SQL 来收集感兴趣的工作表中包含的列的列表或计数。您在此处采用的方法取决于所提取信息的复杂性。同样在我的 SSIS 包中,数据在导入后仍然可以关闭。在这种情况下,我首先将导入到一个临时登台表中,在该表中执行检查,然后使用 MERGE 将符合感兴趣标准的内容规范化到最终目标表中。
如果您有任何问题,请告诉我。希望这有助于解决部分问题。