【问题标题】:Format .csv file using SSIS使用 SSIS 格式化 .csv 文件
【发布时间】:2017-10-11 18:46:18
【问题描述】:

我有这样的 .csv 文件:

+---------+--------+--------------------+---------+-----+----------+----------------+
| CLIENTE | CENTRO |      MATERIAL      | PERIODO | MES | UNIDADES |   PLATAFORMA   |
+---------+--------+--------------------+---------+-----+----------+----------------+
|  100013 |   2001 | 1A000-991801053303 |    2017 |   1 |      100 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   2 |      200 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   3 |      300 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   4 |      400 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   5 |      500 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   6 |      600 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   7 |      700 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   8 |      800 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |   9 |      900 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |  10 |     1000 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |  11 |     1100 | F25 -( BMW X3) |
|  100013 |   2001 | 1A000-991801053303 |    2017 |  12 |     1200 | F25 -( BMW X3) |
+---------+--------+--------------------+---------+-----+----------+----------------+

我阅读它时使用平面文件源没有问题,最后发送到 ADO NET Destination。问题是我们的客户想要读取其他方式的寄存器。他们的 .csv 文件格式如下:

+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| CLIENTE | CENTRO |      MATERIAL      |   PLATAFORMA   |  |  2017-1  | 2017-2  | 2017-3  | 2017-4 | 2017-5  | 2017-6  | 2017-7  | 2017-8  | 2017-9  | 2017-10 | 2017-11 | 2017-12 |
+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |      100 |     200 |     300 |     400 |     500 |     600 |     700 |     800 |     900 |    1000 |    1100 |    1200 |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
|  100013 |   2001 | 1A000-991801053303 | F25 -( BMW X3) |  |          |         |         |         |         |         |         |         |         |         |         |         |
+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+

所以第 5 列的第一个寄存器:2017-10100 对应另外 4 列的第一行 2017-11200 到第二行,依此类推...

如您所见,前 4 列相同,但第 5 列不同。他们合并列PERIODOMES,在它下面我们有列UNIDADES。我想要的是如何将其格式化为 .csv 并格式化为第一个。

总之,我想将第二个 .csv 文件转换为第一个

我读到我可以使用 PIVOT 来实现它。但我真的不明白如何使用它。我搜索了有关它的教程,但没有找到任何我想做的类似的东西。

实际 SSIS 包:

Package

【问题讨论】:

  • 您可以使用 SQL Server Pivot 关系运算符将行转换为列。而不是使用 SSIS 执行此任务,而是使用 SQL。

标签: csv ssis pivot ssis-2012


【解决方案1】:

使用 Unpivot 转换。这张图片来自 VS BIDS 2008。 然后,您可以使用 pivotkey 值在目标表中创建行

【讨论】:

  • 听起来不错,我试了一下,效果很好,但现在,“UNIDADES”栏目怎么样?我怎样才能将它也恢复为列?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 2020-10-28
相关资源
最近更新 更多