【发布时间】:2012-06-20 09:30:07
【问题描述】:
我在使用 SSIS 时遇到问题,希望有人能帮助我。我是这个 Microsoft 软件的新手,我被要求从一个包含 13 周的 Excel 计划文件中导入数据。所以数据在Excel文件中显示如下:
Person id | Person age| School activity | Activity leader| 18-06-2012 | 25-06-2012 | ..(more weeks)
1452 | 14 | Painting | John Smith | 2 | 6 | ...
其中 2 和 6 代表每周花在此活动上的小时数。
虽然,人员 ID、人员年龄、学校活动和活动负责人在此 Excel 文件中是静态列标题,但在文件之间更改时是周列标题。
因此,我不知道如何将这样的数据文件导入我的数据库,因为我遇到了从一个文件到另一个文件的映射问题。
我希望将数据作为每个星期列的单独行放入数据库中,因此我使用 unpivot 转换来实现这一点。我想要的是无论列标题如何都能够导入数据。
【问题讨论】:
-
每个文件的列数总是相同还是不同?
-
是的,有。只是周列发生了变化。本周我有 13 周,从 2012 年 6 月 18 日到 2012 年 9 月 10 日。所以下周我将有另一个具有相同列的列,但周列将从 25-06-2012 到 17-09-2012。
-
是否可以将数据转储为纯 csv 文件?平面文件导入器并不真正关心列标题是什么,因此,如果您可以引入格式一致的文件(例如,13 列,逗号分隔,带引号的字符串),您可以简单地跳过标题行,然后对数据本身执行任何您想要的操作。
-
另外,你能为我们定义模式映射吗?换句话说,您在 Excel 中有这些列......您的数据库中对应的列是什么/数据库中的数据是如何表示的?
-
数据库中的列如下:人员id->人员id人员年龄->人员年龄学校活动->学校活动活动负责人->活动负责人18-06-2012,25-06 -2012,... -> 周标签下方的周行 -> 我计划通过非透视转换获取这些列的小时数。
标签: excel dynamic import header ssis