SSIS读取Flatfile标头列

时间:2019-03-06 04:42:15

标签: csv ssis etl flat-file ssis-2017

在我可以如何在SSIS中实现以下目标方面,你们可以帮助我(向正确的方向指点我)。

所以,我有一个看起来像这样的平面文件

    ColumnA  ColumnB  ColumnC  ColumnD  ColumnN
    1        x        APPLE    Random1  MoreRandomData1
    2        y        ORANGE   Random2  MoreRandomData2
    3        z        OTHER    Random3  MoreRandomData3

...,我需要将这些数据以以下格式存储到表中

ColumnA, ColumnB, BigBlurColumn
1        x        ColumnC:APPLE, ColumnD:Random1, ColumnN:MoreRandomData1
2        y        ColumnC:ORANGE, ColumnD:Random2, ColumnN:MoreRandomData2
3        z        ColumnC:OTHER, ColumnD:Random3, ColumnN:MoreRandomData3

这是我的问题:
1.如何读取平面文件的标题/列?     2.是否可以透视#1的结果

如果我可以同时操纵#1和#2,那么对我来说,在SSIS中进行重置将非常容易,显然我可以编写这些脚本,但是我的客户坚持使用SSIS,因为这是标准的ETL工具。

关于如何实现上述方案的任何想法?

谢谢

2 个答案:

答案 0 :(得分:1)

在平面文件连接管理器中,取消选中First row contains header选项。然后转到“高级标签”,删除所有列并保留一列,并将其长度更改为4000。

在数据流任务中,添加一个脚本组件,该组件将每一行分开,并:

  1. 从第一行读取列标题
  2. 在其余所有行中生成所需的输出列

以下答案(不同的情况,但有帮助)将为您提供一些见识:

答案 1 :(得分:0)

尝试将数据转储到临时表中,然后使用STRINGAGG()函数将数据连接为所需的格式,然后将其移至目标表。