SSIS动态Excel列标题

3

我希望你能帮助我解决使用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文件中静态的列标题,但是每个文件的“周”列标题会发生变化。

因此,我不知道如何将这样的数据文件导入我的数据库,因为我从一个文件到另一个文件存在映射问题。

我希望将数据放置到数据库中,每个周列都是单独的行,因此我使用了非规整转换来实现这一目标。我想要的是能够导入数据,而不管列标题是什么。


每个文件的列数是否总是相同的,还是每个文件的列数都不同? - dodexahedron
是的,有。只是星期列会改变。 本周我有13个星期,从2012年06月18日开始,到2012年09月10日结束。所以下周我会有另外一个,具有相同的列,但星期列将从2012年06月25日到2012年09月17日。 - bio_guedes
数据能否以纯csv文件的形式转储?扁平文件导入程序并不在意列标题是什么,因此如果您可以带入一个格式一致的文件(例如13列、逗号分隔、带引号的字符串),您可以简单地跳过标题行,然后对数据本身执行任何操作。 - dodexahedron
另外,您能为我们定义模式映射吗?换句话说,在Excel中有这些列...在您的数据库中对应的列是什么/数据如何表示在数据库中? - dodexahedron
很高兴听到这个消息。我已经将其发布为答案,如果您不介意,请点击接受它。 :) - dodexahedron
显示剩余4条评论
2个回答

2
如果数据可以以CSV格式提供,您可以使用Flat File Source,然后跳过标题行,只要同一列始终具有相同、可预测的格式即可。
您在讨论中提到将使用unpivot transform将数据转换为单独的行,因此您知道如何完成其余部分。

0

最近我不得不解决这个问题。我发现最大的问题是SSIS与Excel期望一个静态列集。

所以我为每个文件构建了类似的数据流(仅在列不同的地方有所不同)。然后我放置了一个带有文件枚举器的控制流来拾取所有文件,并根据文件名做出决策,以确定要使用哪个数据流。

这并不优雅,但它非常有效。


问题在于这样做,每次我有一个新的时间表文件,我都必须创建一个数据流。难道没有自动完成这个过程的方法吗? - bio_guedes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接