0

或者可能是由于日志设备的配置不一致,我需要通过 SSIS 加载一组 csv 文件,这些文件有时会有第一行带有列名,有时不会。文件格式在其他方面相同。

日志配置似乎有可能被标准化,所以我不想浪费编程时间来打开每个文件并确定它是否有标题行,然后根据不同的方式处理它。

相反,我想指定诸如 Destination.MaxNumberOfErrors 之类的东西,这将允许每个文件最多有一个错误行(因此,如果文件中唯一的问题是标题,它就不会失败)。不过,平面文件源错误是致命的,所以我看不到让它继续运行的方法。

失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

我最好的选择似乎是暂时忽略第一个数据行,等待是否可以实现更统一的配置。当然,当这个策略到位时,数据集是无效的。我应该补充一点,数据非常大,因此 ETL 例程需要尽可能高效。在我看来,如果有任何替代方案,这将禁止任何文件解析或条件拆分。

问题是是否有办法配置文件源以从这个致命错误中继续?

4

2 回答 2

0

如果您可以假设标头名称的值永远不会出现在您的数据中,那么将您的平面文件连接管理器定义为没有标头。数据流中的第一步将检查 1-N 列的值与标题行的值。仅当值不匹配时才让数据流过。

还有比这更复杂的问题吗?

于 2011-10-08T06:37:21.703 回答
0

就在这里!

在编辑器的“错误输出”页面中,将每一行的错误响应更改为“重定向行”。然后,您可以通过源的错误输出将它们作为单列来捕获问题行(在您的情况下为标题)。

于 2011-10-08T09:13:00.303 回答