使用SSIS将平面文件加载到SQL Server

时间:2016-10-27 17:01:51

标签: sql-server import ssis

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

1 个答案:

答案 0 :(得分:0)

1.使用系统对象类型

指定任何名称的变量

2.使用执行sql任务

  1. 查询你的表格:
  2. 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] ...”,应为每个变量的字符串数据类型

    1. 使用另一个执行sql任务,在SQL Source Type中指定 Variable ,然后转到Parameter Mapping页面,选择System Object变量,将Name设置为0,之后转到Result设置页面,逐个选择所有这七个参数,并将参数名称更改为0,1,2,3,4,5,6

    2. 从现在开始每次运行包时,每个变量都会被分配给每个值,如果你想将它们加载到目标表中,这就是最后一步

    3. 使用另一个执行SQL任务,使用如下查询:

    4. Insert into table select ?,?,?,?,?,?,?

      进入参数映射页面,选择所有这七个变量,并逐个更改名称为0,1,2,3,4,5,6,以映射

      你可能需要自己解决一些小问题,比如数据类型,但逻辑几乎就是这样。

      希望这有帮助!