我使用了Execute SQL Task来选择一些列并在包变量中分配列名。之后,我在Derived Column转换中使用该包变量来映射列。但是,当我在派生列T / R中提到@ [User:Variable name]时,它只选择列名作为“字符串值”。它不会将变量视为我映射的列。
我通过包变量传递列名,并在派生列转换中提到变量名而不是列名。但是,它只是使用列名作为字符串值,而不是使用列数据进行映射。
我们的源表结构经常变化。因此,我们准备了一个映射表,其中有两列(源表列名和转换列名)。我需要使用映射表的源列名映射源列,并选择将进一步处理的相应转换列名。因此,首先通过执行sql任务,我从映射表中获取所有映射的源列,并将每个匹配的源列名存储到不同的包变量中。之后在数据流任务中,在源适配器之后,我使用派生列转换并将源表中的变量而不是输入列名分配给新的派生列。但是,这里不是选择列值,而是将已经存储在这些变量中的列名视为字符串。