【问题标题】:SSIS - Importing variable format text filesSSIS - 导入可变格式文本文件
【发布时间】:2009-10-16 12:55:55
【问题描述】:

“可变格式”是指文本文件中的每一行都以表示记录类型的单个字符代码开头,并且每种记录类型都有不同的格式。我相信这是某种相当常见的大型机数据导出方法。更糟糕的是记录类型实际上是层次结构。使用的代码相关如下:

0ThisIsAFileHeader
2ThisIsABatchHeader
4ThisIsDetailData
4ThisIsDetailData
6ThisIsAMatchingBatchFooter
8ThisIsAMatchingFileFooter

0/8 是头/尾记录(各自的格式),2/6 是子头/子尾记录(也是各自的格式),4 表示实际数据或明细记录。

SQL Server 2008、Visual Studio.NET 2008。自定义脚本任务是导入此数据的唯一方法吗?鉴于此,有人可以指出我讨论这样做的资源吗?导入固定宽度的文本文件非常简单,但我不确定脚本任务将在控制流中的哪个位置以及后续步骤如何使用数据。

【问题讨论】:

    标签: .net sql-server sql-server-2008 ssis


    【解决方案1】:

    这可以在 SSIS 中完成,尽管您必须跳过一些环节。这是我想到的一种方法:

    • 源文件应设置为 2 列,第一个字符和其余的字符串。
    • 基于第一个字符的条件拆分操作将行拆分为单独的工作流。
    • 数据转换操作以获取第二列并将其拆分为适当的字段,这必须针对每种类型的行单独完成并附加到适当的条件拆分行。
    • 应为每个条件分支配置目标以适当地存储/处理数据。

    如果需要进一步的 ETL 工作来开始将项目链接在一起,我会将文件导入临时表或永久暂存区,并在提交最终结果之前执行更多转换。

    真正的麻烦在于数据是相关的,以及你如何保持这种关系/事后推断它。我想如果我必须把它放在一起,我会在数据流中使用一个脚本组件,每次看到标题记录时都会增加一个计数器,并输出到流中。这样一来,每条记录都会有一个识别号,以后可以用它来关联它们。

    这有点复杂,但问题可以解决。

    【讨论】:

    • 这正是我的 BI 团队过去所做的。我还建议将任何不符合条件拆分条件的记录转到一个未定义的记录表,该表基本上是一个文本 blob,并设置监视以在记录在此表中时通知您。每个人都曾在蓝月亮数据模式中更改这些类型的导入,您需要注意它何时发生,因为您可能直到数据显示在文件中才知道。
    【解决方案2】:

    也许 SSIS 有更好的方法来做到这一点,但几年前我不得不在 DTS 中完成这项任务时,这就是我所做的。

    首先,我将数据带入具有两列(如果我觉得需要自动生成的 ID,则为三列)的暂存表。一列用于指示记录类型的字符,一列包含该行的所有其余数据。

    然后我根据沿途进行任何清理的数据分离出规范化表。

    然后我导入到我的生产表中。

    【讨论】:

      【解决方案3】:

      如果我是你并且这 6 个不同的字符代码是唯一与一组特定数据相关联的字符代码,那么我将使用平面文件导入组件将其导入,然后在每个代码上使用案例组件进行切换。我假设您想维护层次结构,以便您可以将数据与 Case 分开并在之后插入它。

      使用脚本组件导入数据通常是我最后的手段,但我真的很喜欢在文件(如您的情况)未正确导入时使用脚本代码在实际平面文件导入之前格式化数据。我相信编写一个格式化应用程序并使用它来格式化来自系统的任何文件比每次都编写自定义脚本导入更有用。

      【讨论】:

        【解决方案4】:

        我做过很多次这样的事情,但我总是对数据进行预处理,为每一行添加一个行号。之后,使用 max/min 和行号比较将各部分保持在一起就很容易了。

        但这有点笨拙。如果我们使用条件拆分,SSIS 本身可以获取行号吗?或者我们可以使用递增的整数键代替行号,而不会有条件使它们乱序的风险?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-23
          • 2022-10-14
          • 1970-01-01
          • 2013-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多