【问题标题】:SSIS: importing files some with column names, some withoutSSIS:导入文件有些带有列名,有些没有
【发布时间】:2011-10-08 00:43:58
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: header ssis dataflow


    【解决方案1】:

    是的!

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

    【讨论】:

    • 我看过这个。我想这是让文件导入继续的方法。不太适合我的目的,但答案是正确的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多