2017-09-05 100 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中使用該結果集=單行。

將其映射到變量。

在數據流的派生列中,您可以將該變量設置爲新列。

相關問題