2017-09-05 79 views
0

我正在使用SSISData Flow Task将数据从一个表传输到另一个表。表A中的列A包含一个数字,我想在表B的B列中存储最后3位数字。如何将SQL语句的结果作为变量存储并在SSIS表达式中使用结果?

首先,我试图抓取列A中的所有数据并通过变量存储一个简单的SELECT声明SELECT COLUMN_A FROM TABLE_A。但是,当我想要查询的结果集时,变量将该语句作为字符串存储。我已将EvaluateAsExpression属性设置为False,但无济于事。

其次,我希望能够在Data FlowDerived Column中使用此查询的结果来提取最后3位数并将值存储在Column_B中的目标中。我有表达式为:

(DT_STR,3,1252)RIGHT(@User::[VariableName],3)

我要存储此作为字符串因此(DT_STR,3,1252)数据类型。

我在表B的Column_B中得到的所有结果是SELECT语句“E_A”的最后3个字符。网络上有很多有用的信息,包括YouTube视频,例如将文件路径和服务器名称设置为参数或变量,但我无法看到许多与我的查询的细节相关的信息。

我已经使用Execute SQL Task从平面文件中插入行数,但在本例中,我想使用Derived Column工具。

我在做什么错了?感谢任何帮助。

回答

0

感谢KeithL这是一个解决方案,我将在未来使用,但我发现了另一个。

我放弃了变量和Transformation EditorExpression盒做的:

(DT_STR,3,1252)RIGHT((DT_STR,3,1252)Column_A,3)

在我的问题中,我无法将Table_A中的Column_A作为字符串进行投射。第一次使用(DT_STR,3,1252)只是将目标列设置为string,以便不使用与我的例子中的源相同的数据类型,即int

它的第二次使用(DT_STR,3,1252)实际上将Column_A从int投射到string

0

如果您没有使用该号码进行其他操作,我宁愿在SQL中完成所有工作。

select right(cast(ColA as varchar(20)),3) from tableA 
-- you can add another cast if you want it to be an int 

在执行sql中使用该结果集=单行。

将其映射到变量。

在数据流的派生列中,您可以将该变量设置为新列。

相关问题