SSIS新手,我正在尝试将平面文件导入我的数据库。平面文件中有6个不同的行,我需要将它们组合成数据库中的一行,每个行包含一个符号的不同价格。例如下面:
IGBGK 21 w 47
IGBGK 21 u 2.9150
IGBGK 21 h 2.9300
IGBGK 21 l 2.9050
IGBGK 22 h 2.9300
IGBGK 22 l 2.8800
因此,每个行都在平面文件的不同行中,但在符号IGBGK
的不同列中将成为一行。我可以转换数据以将每个数字放入其自己的列中,但不能将它们组合成一行。
非常感谢任何有关我需要的方向的帮助。
最终产品应如下所示:
Symbol | col 1 | col 2 | col 3 | col 4 | col 5 | col 6
-------+-------+-------+-------+-------+-------+-------
IGBGK | 47 | 2.915 | 29.30 | 2.905 | 2.930 | 2.880
答案 0 :(得分:0)
1.使用系统对象类型
指定任何名称的变量2.使用执行sql任务
WIth ABC
as
(Select * From table --which give you the original result
)
Select * From ABC
PIVOT (Count(**4th Column Name**) for **1st Column Name** IN ([col 1],[col 2],[col 3],[col 4],[col 5],[col 6]))
4.将所有完整查询复制到该任务中,并将结果设置为完整结果
5.切换到结果集页面,选择您创建的变量,并将结果名称设置为0
6.现在每次运行包时,变量都将被指定为完整的结果表,如上面所需的格式所示。
7.并指定对应于每列的另一个 7 变量,“symbol,[col 1] ...”,应为每个变量的字符串数据类型
使用另一个执行sql任务,在SQL Source Type中指定 Variable ,然后转到Parameter Mapping页面,选择System Object变量,将Name设置为0,之后转到Result设置页面,逐个选择所有这七个参数,并将参数名称更改为0,1,2,3,4,5,6
从现在开始每次运行包时,每个变量都会被分配给每个值,如果你想将它们加载到目标表中,这就是最后一步
使用另一个执行SQL任务,使用如下查询:
Insert into table
select ?,?,?,?,?,?,?
进入参数映射页面,选择所有这七个变量,并逐个更改名称为0,1,2,3,4,5,6,以映射?
你可能需要自己解决一些小问题,比如数据类型,但逻辑几乎就是这样。
希望这有帮助!