在运行时期间添加列以选择ssis包的语句

时间:2015-02-18 09:44:35

标签: sql-server ssis package etl dynamic-sql

我有一个简单的包,可以将数据从源移动到目标,但是我想在运行时添加新列。 示例源表包含列a,b和c。 我在包的开头有一个SQL任务,它根据另一个表中的值创建一个新的列,如+' _' + b。 我的问题是如何在运行时将此列添加到包的源。

1 个答案:

答案 0 :(得分:1)

我假设您要在第一个表中添加2列的派生列,并将它们添加到第二个表中。

以下是如何执行此操作的基本示例(仅使用临时表进行说明)。

首先,创建一个包含2列和单行的临时表:

SELECT 'a' AS ColA, 'b' AS ColB
INTO #tmp

接下来创建一个临时表来插入值和派生列(ColC):

CREATE TABLE #tmp2 (ColA VARCHAR(1), ColB VARCHAR(1), ColC VARCHAR(3))

插入第一张表中的数据并合并ColA + '_' + ColB

INSERT INTO #tmp2
        ( ColA, ColB, ColC )
SELECT ColA, ColB, ColA + '_' + ColB
FROM #tmp

SELECT * FROM #tmp2

输出:

ColA    ColB    ColC
--------------------
a       b       a_b