首页 > 解决方案 > SSIS - 更改列名的 Excel 到 SQL Server

问题描述

我有一个 Excel 工作表,它根据一年中的年份和当前周更改列名,例如 201901 将是 2019 年的第一周。

每天发送给我们的 Excel 工作表会根据当前日期(最多 6 个月)自动调整列名,因此当前 (31/07/2019) 年和周显示 201931 - 202011:

在此处输入图像描述

所以下周的N列将是201932(列基本向左移动)。

我尝试将 Excel 源列更改为 1、2、3、4 等不同的别名,希望将数据导入 SQL Server,然后在 SQL Server 中编写触发器以更改列名,但不起作用由于映射 SSIS 需要。

在此处输入图像描述

工作正常,直到列更改为下周。

一个简单的方法是删除表并将文件转储到一个名称相同的新表中,但看不到如何在 SSIS 中设置,因为您需要映射列名(不幸的是,这会改变)。

以下是数据流的外观:

在此处输入图像描述

理想情况下,对我来说,这样的事情是完美的:

在此处输入图像描述

但不确定如何在 SSIS 中实现此结果?

标签: sql-serverexcelssisdata-migration

解决方案


我建议转换数据。目前,您有一个“跨表”格式。

以 (RAG_week; CalenderWeek; Value_of_CalenderWeek) 的形式放置 Excel 数据怎么样?为此,您可以使用在 Excel 文件中填充新工作表的 Excel 宏。(每个单元格在一个数据集中进行转换,单独成为一行。)接下来,您在 SQL Server 上创建一个类似的表。然后,您可以创建一个具有恒定列分配的 SSIS 包,只需每周添加新数据。

这会影响对数据的进一步评估,但似乎是一种更稳定的方法。


推荐阅读