我有一个类似于你的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标准化为最终登录表格。
让我知道如果您有任何问题。希望这有助于解决部分问题。