SSIS-如何合并三个不同的平面文件

时间:2019-09-18 14:06:35

标签: sql-server ssis ssis-2017

我的要求是从三个不同的数据集中生成一个单一的平面文件,该文件的名称中应包含时间戳值。这三个数据集均来自SQL Server,并使用SQL查询从源中获取这些数据。源类型为OLEDB源。

数据集1 :这是仅具有一行且具有不同列的标头数据集。前两列是硬编码的,时间戳是动态计算的。

+--------+----------+----------------------+--------------------+
| FileID | FileType | SourceBeginTimestamp | SourceEndTimestamp |
+--------+---------------------------------+--------------------+
|    1   |    TXT   |   Time SSIS starts   |   Time SSIS Ends   |

数据集2 :包含多个包含数据列的数据集。总行通常为1000到10000。

+---------+---------+---------+---------+---------+
| Column1 | Column2 | Column3 | Column4 | Column5 |
+---------+---------+---------+---------+---------+
|         |         |         |         |         |

数据集3 :页脚数据集包含的行总数包括数据集1 数据集2 数据集3 。在下面的示例中-考虑数据集2具有 1198 行。

+-----------+----------+
| TotalRows | FileType |
+-----------+----------+
|    1200   |    txt   |

到目前为止,我已经完成的工作:我为每个数据集使用了三个不同的Dataflow任务和平面文件连接管理器。使用表达式动态创建带有时间戳的平面文件名,其中没有秒。这样,当我运行程序包时,它将仅创建一个文件并将所有三个数据集都转储到一个文件中。

问题是,当程序包在几分钟之内运行时,将有两个文件。

预期结果::我想将这三个平面文件合并为一个具有SampleText_YYYYMMDDHHMISS.txt之类文件名的平面文件。我正在尝试一种使用“文件系统任务”或让DFT将数据转储到行集中,然后使用脚本任务将所有数据转储到一个平面文件中的方法。

输出文件将没有标题名(ColumnNames)

请提出最佳方法。

1 个答案:

答案 0 :(得分:0)

与其让您的数据流填充三个单独的平面文件,不如让它们填充三个对象类型的包变量。

然后让您的脚本任务创建一个单一的平面文件,并按所需顺序从3个变量写入文件。

相关问题