【问题标题】:SSIS : Creating a flat file with different row formatsSSIS:创建具有不同行格式的平面文件
【发布时间】:2017-04-07 20:15:13
【问题描述】:

我想创建一个平面文件输出,其中行的格式不同。 文件有页眉、中间数据行、页脚行。 文件如下所示

H|deptcode123|deptNameXYZ|totalemp300   
E|Sam|Johnson|address1|empCode1|........many other columns
E|Sam2|Johnson2|address2|empCode2|........many other columns
E|Sam4|Johnson3|address3|empCode3|........many other columns
E|Sam5|Johnson4|address4|empCode4|........many other columns         
J|300|250000

如何在 SSIS 中生成此文件。输入将来自不同的表,我打算编写 3 个单独的查询/sp 来获取页眉、中间行和页脚行记录。

【问题讨论】:

  • 页眉只是一个开始,还是出现了多组页眉、细节、页脚?如果您有多个 H/D/F 组,那么您基本上需要在 SQL 语句中构建它。下面的两种解决方案不适合在中间重新出现的标题
  • 页眉(H)和页脚(F)在文件中只会出现一次,中间行(D)将是多行。

标签: sql-server ssis etl ssis-2012 bids


【解决方案1】:

为此,您需要为每种不同类型的行集使用数据流和连接管理器。例如,要拥有不同的页眉、正文和页脚,您将需要 3 个数据流和 3 个平面文件连接管理器。每个平面文件连接管理器都指向同一个文件。诀窍是确保未选中平面文件目标中的设置Overwrite data in the file。这样,每个数据流都会执行并附加到文件中,并且每个数据流都可以有其离散的列和数据类型。

【讨论】:

  • 我试过这个,但是每种类型的列数不同。标题(H)假设有 5 列,中间行(D)有 20 列,那么这个(20)的最大值被认为是平面文件中的列数。标题行看起来像这样 H|deptcode123|deptNameXYZ|totalemp300|||||||||...
【解决方案2】:

如果您想创建一个平面文件,其中行具有不同的元数据。您必须使用一列平面文件连接管理器。 Dt_WStr 数据类型和长度 = 4000

使用相同的Flat file destination连续使用3个DataFlow task

第一个写页眉,第二个写中间行,第三个写页脚。

您可以连接 select 语句中的值或使用 Script Component

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多