【发布时间】:2014-05-29 20:31:40
【问题描述】:
我可以使用集成服务来提取和转换数据,例如,包含在导入平面文件中单一类型的固定格式记录中的数据。我还可以在一个文件中处理多种类型的固定格式记录,只要我能够将它们发送到不同的目的地。
但是,如果我需要将输入文件中的两条(或更多条)记录关联到要发送到单个目的地的每条记录,该怎么办?我知道这些记录属于一起的唯一方法是它们在输入文件中彼此相邻。数据流将处理一条又一条记录。我不能使用 SSIS 包变量来计算记录,因为包变量只有在数据流完成后才会更新。
这是一个示例输入文件:
HDR00120140501
DTL001JOAN 0.00
DTL002 30.00 ABC
DTL001DAVE 11.00
DTL002 21.85 DEF
DTL001BERT 50.00
DTL002 0.00 GHI
TRL001
我需要将 DTL001 和 DTL002 详细信息行中的数据合并为单个输出记录。此外,我需要包含来自 HDR001 标题行的信息(在本例中为日期值)。所以目标表看起来像:
CREATE TABLE TestImport (
ID int IDENTITY(1,1) NOT NULL,
ImportDate datetime NULL,
Name char(4) NULL,
Amount1 decimal(18, 2) NULL,
Amount2 decimal(18, 2) NULL,
Desc char(3) NULL )
六个输入明细记录,加上表头,将在目标表中产生三个记录:
ImportDate Name Amount1 Amount2 Desc
---------- ---- ------- ------- -----
2014-05-01 JOAN 0.00 30.00 ABC
2014-05-01 DAVE 11.00 21.85 DEF
2014-05-01 BERT 50.00 0.00 GHI
这是一个已解决的问题,旨在帮助可能遇到类似问题的任何人。
【问题讨论】:
标签: ssis sql-server-2012