1

我的要求是从三个不同的数据集中生成一个平面文件,文件名中应该有时间戳值。所有三个数据集都来自 SQL 服务器,并使用 SQL 查询从源中获取这些数据。源类型为 OLEDB 源。

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

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

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

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

DataSet 3:页脚数据集包含包括Dataset1Dataset2dataset3在内的总行数。下面的示例 - 考虑 Dataset2 有1198行。

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

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

问题是,当包在一分钟更改中间运行时,将有两个文件。

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

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

请建议最好的方法。

4

1 回答 1

0

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

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

于 2019-09-18T15:05:52.217 回答