1

我有一个日历表 Excel 文件。每个月都会添加一个新列。

我不应该阅读列名。当我在 5 月开发 ETL 时,我将虚拟列放置到 12 月。Excel 文件是这样的(列):

customer  jan12  feb12  mar12  apr12  may12

为了在 ETL 中形成元数据数据,我在 12 月之前添加了虚拟列:

customer jan12 feb12 mar12 apr12 may12 mon mon mon mon mon mon mon

然后在 SSIS Excel Source 中我写了一个查询:

select * from Sheet1$A2:M1624

(不读取列名并读取直到 dec 列)

现在在六月的 Excel 文件是这样的:

customer jan12 feb12 mar12 apr12 may12 jun12

由于我创建了元数据,我认为加载将是和平的。我的命运 ETL 失败了。

4

1 回答 1

1

在运行时,即使在创建源时提供了这些列的元数据,SSIS 也不会从 excel 文件中加载空白列。问题场景:我们在 excel 源中定义了 10 列,并将它们与目标中的 10 列进行映射。在运行时,如果我们只遇到 3 列形式的 excel 源,则 excel 源将重建元数据(自动)到只有 3 列。由于目标映射为 10 列,因此包在验证阶段失败。

因此,为了读取具有不同列的 excel 文件,我们需要中继脚本任务。但是这里的限制是您至少应该知道您在 excel 中可能拥有的最大列数。这是我们可以留下的东西。

解决方案

于 2012-08-01T11:19:04.367 回答