如何将SQL语句的结果作为变量存储并在SSIS表达式中使用结果?
我正在使用SSIS
Data Flow Task
将数据从一个表传输到另一个表。表A中的列A包含一个数字,我想在表B的B列中存储最后3位数字。如何将SQL语句的结果作为变量存储并在SSIS表达式中使用结果?
首先,我试图抓取列A中的所有数据并通过变量存储一个简单的SELECT
声明SELECT COLUMN_A FROM TABLE_A
。但是,当我想要查询的结果集时,变量将该语句作为字符串存储。我已将EvaluateAsExpression
属性设置为False
,但无济于事。
其次,我希望能够在Data Flow
的Derived 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
工具。
我在做什么错了?感谢任何帮助。
感谢KeithL这是一个解决方案,我将在未来使用,但我发现了另一个。
我放弃了变量和Transformation Editor
的Expression
盒做的:
(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
。
如果您没有使用该号码进行其他操作,我宁愿在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中使用该结果集=单行。
将其映射到变量。
在数据流的派生列中,您可以将该变量设置为新列。