【问题标题】:Process a Ragged Right Text File in SSIS在 SSIS 中处理参差不齐的右文本文件
【发布时间】:2015-05-06 23:31:04
【问题描述】:

我在 SSIS 工作。我有一个参差不齐的以竖线分隔的文本文件。也就是说,每行的列数是可变的。此外,每一行都可以分类。对于第 1 列 =“A”的行,它应该有 5 列。对于第 1 列 =“B”的行,它应该有 3 列。此外,每列的数据类型因记录类型而异。例如,“A”记录的第 2 列是 int,“B”记录的第 2 列是 varchar(50)。

我正在尝试导入此文本文件并将每种记录类型放入相应的表中。例如,所有“A”记录必须到 A_table,所有“B”记录必须到 B_table。

在我的数据流任务中,我需要将我的平面文件源带到一个 OLE DB 目标。当然,我的平面文件源配置为将所有数据压缩到 1 列中(因为 SSIS 不允许平面文件源中的可变列)。从我迄今为止在网上对这种情况的调查来看,大多数人建议在平面文件源之后执行脚本任务。但是,这对我不起作用,因为在脚本任务解决方法中,我有效地采用具有最大列数的记录类型,为这些列中的每一个定义一个输出,并将其用于所有记录。因为每个记录类型的数据类型都不同,所以这个解决方案对我不起作用。

因此,我的下一个最佳猜测是将平面文件源进行条件拆分。虽然我当然可以这样做,但我不知道如何将我的平面文件源(只有 1 列)发送到目标表(定义了几列)。我该怎么做?

【问题讨论】:

  • 这不是一个不规则的权利(或分隔)。这是 SSIS 不做的可变记录类型文件,至少可以轻松做到

标签: ssis


【解决方案1】:

通过管道符号将Flat File Source 设置为delimited。确保它包含所有列,它通常从第一行获取列。如果您的第一行只有 2 列,但其他行可以包含 15 列,那么您希望 Flat File Source 也包含 15 列。

将所有数据类型保留为字符串。

按不同类型拆分行。您现在将获得每种类型的流程。 为每个流/类型创建一个数据转换和一个目的地。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2013-07-23
    • 1970-01-01
    • 2013-06-17
    • 2012-04-06
    相关资源
    最近更新 更多