【问题标题】:SSIS 2005 - How to Import a Fixed Width Flat File?SSIS 2005 - 如何导入固定宽度的平面文件?
【发布时间】:2011-02-17 17:59:38
【问题描述】:

我有一个看起来像这样的平面文件:

junk I don't care about   \n
\n
columns names\n
val1    val2   val3\n
val1    val2   val3\n
columns names   \n
val1    val2   val3\n

我只关心带有值的行。这些值行都是固定宽度格式并且具有相同的行长。其他垃圾行和列名可以有任何线宽。

当我尝试平面文件固定宽度选项或不规则右侧选项时,预览看起来全错了。任何想法将其放入 SSIS 的最简单方法是什么?

【问题讨论】:

  • 如果可能的话,我会让供应商在发送给您之前清理这些烂摊子。我们将这样的文件发回给客户和供应商,大约 60% 的时间,他们会修复它们。可能不可能,但如果他们愿意,它肯定会为您节省很多开发时间。通常,当我们告诉客户以体面的格式提供文件的成本要低多少时,他们更愿意这样做。

标签: sql etl flat-file ssis


【解决方案1】:

您不能使用固定宽度选项,我似乎记得只有在整个最后一列中不整齐时,右选项才适用。

您可以使用 ragged right 选项并将整个内容读入字符串列,然后使用派生列。

或者,预处理文件(可能在 SSIS 中,使用带有条件拆分的不规则权利,输出到平面文件)以过滤掉您要忽略的行,然后您可以使用平面文件连接管理结果文件。

另一种选择是手动编写数据源脚本任务。

如果您可以通过在其他数据流的输出上定义新的连接管理器布局来使用更复杂的文件,那就太好了,但这目前在 SSIS 中不可用。

这与我在这个问题中提出的问题基本相同:How to process ragged right text files with many suppressed columns in SSIS or other tool?

【讨论】:

    【解决方案2】:

    手动删除顶部的垃圾后试试这个。

    1. 使用固定宽度选项设置任务
    2. 手动将列添加到高级选项卡。在这里,您需要添加 3 列,每列长度为 4。

    如果可行。那么您可以在执行数据流任务之前使用脚本任务来读取平面文件并删除垃圾。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2023-03-27
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多