SSIS:使用列名导入一些文件,一些没有

时间:2011-10-08 00:43:58

标签: header ssis dataflow

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

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

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

  

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

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

问题是,是否有办法配置文件源以继续此致命错误?

2 个答案:

答案 0 :(得分:0)

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

这个问题比这更复杂吗?

答案 1 :(得分:0)

是的!

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