SSIS - 列名作为变量/以编程方式更改

Posted

技术标签:

【中文标题】SSIS - 列名作为变量/以编程方式更改【英文标题】:SSIS - Column names as Variable/Changed Programmatically 【发布时间】:2012-06-09 16:52:54 【问题描述】:

我希望有人能帮我解决这个问题 - 我有 24 个 CSV 格式的文件,它们都有相同的布局,需要加入一些预先存在的数据。每个文件都有一个需要连接到其余数据的列,但这些列在原始文件中都具有相同的名称。作为连接的一部分,我需要将列自动重命名为文件名。

列的最终名称需要是:文件名 - 来自另一列的数据。

我目前的方法是使用 foreach 容器并使用容器生成的变量来命名列,但是我无法在连接中输入该值,即使我这样做了,它也会弄乱输出映射,因为列名会不同。

有人对如何解决这些问题有任何想法吗?谁有主意,谁来救我的命!

编辑如果更多细节有助于解决这个问题... SSIS 版本是 2008 年,每个文件只有几百行。从每月发行的几张账单中收集完整的账单历史记录基本上是一项一次性任务。

源数据有三列,产品编号、产品类型和成本。

目的地需要有 24*3 列,每列都有给定产品类别的每月费用。共有三个产品类别和 24 个账单(在单独的文件中),因此是 24*3。

所以希望我说得更清楚一点 - 我真正需要知道的只是使用从 foreach 文件容器传入的变量来更改列的名称。

【问题讨论】:

您希望在执行联接后更改列的名称吗? 如果我要重申你的问题。在每个源文件中,您需要获取一列中的数据并将其附加到现有输出(文件?)。需要对所有源文件重复此过程。更复杂的事情是附加的输出列需要在源文件之后部分命名。 如果所有这些都是准确的,我进一步的问题是——这 24 个文件是静态的还是变化的(数量和名称)。当您说您需要连接这些数据时,我们是在谈论查找/合并连接转换还是更一般地,您需要将这些数据绑定或链接在一起?您将使用什么版本的 SSIS(2005 或 2008+) 我们所说的数据量是什么类型的 100 行、10k、10M?这是一次性任务还是持续过程? billinkc - 是的,您的第一条评论是 100% 正确的。这 24 个文件的名称会有所不同,因为每个名称都是 CSV 格式的一个月的账单数据。使用 SSIS 2008,大约有 500 行,所以数据不多。这也是一次性任务。 对不起,Praveen,请重新阅读您的评论。是的,数据库中列的最终名称必须是文件名。 【参考方案1】:

我认为最简单的方法是创建一个 tmp 数据库(又名 staging db) 将数据从 xls 文件加载到其中并定义 存储过程 您可以在其中传递参数(例如文件名等)并构建您赢得的逻辑... 干杯马里奥

【讨论】:

以上是关于SSIS - 列名作为变量/以编程方式更改的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .NET 以编程方式调用 SSIS?

以编程方式对输入进行 SSIS 脚本组件转换

在 plpgsql 中以编程方式访问记录的列

作为管理员,如何使用 Grails Spring Security 以编程方式更改用户密码?

当我以编程方式更改约束时 Xcode 给出错误

如何以编程方式重命名 AWS Glue 目录中的列名