2017-09-05 86 views
0

SSISData Flow Taskを使用して、あるテーブルから別のテーブルにデータを転送しています。表Aの列Aには、表Bの列Bに格納する最後の3桁の数値が含まれています。SQLステートメントの結果を変数として格納し、その結果をSSIS式で使用する方法はありますか?

最初に、列Aのすべてのデータを取得し、簡単なSELECTステートメントSELECT COLUMN_A FROM TABLE_A。しかし、変数は、クエリの結果セットが必要なときに、文を文字列として格納します。私はEvaluateAsExpressionプロパティをFalseに設定しましたが、役に立たないです。

第2に、私のData FlowDerived Columnでこのクエリの結果を使用して、最後の3桁を抽出し、その値を宛先にColumn_Bに格納したいと考えています。私が持っている式は次のとおりです。

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

私は、したがって、文字列(DT_STR,3,1252)データ型としてこれを保存します。

私がこれまでにTable_BのColumn_Bに行ったのは、SELECTステートメント "E_A"の最後の3文字です。ファイルパスやサーバー名をパラメータや変数として設定するなど、YouTubeの動画を含むウェブ上には多くの有益な情報がありますが、私の質問の内容に関連するものは多くありません。

フラットファイルから行数を挿入するのにExecute SQL Taskを使用しましたが、この例ではDerived Columnツールを使用します。

私は間違っていますか?どんな助力も感謝しています。

答えて

0

ありがとうKeithLは私が将来使用する1つの解決策ですが、別のものを見つけました。

私は、変数を落とし、Transformation EditorExpressionボックスで行った:

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

私の質問では、私は文字列としてTable_AからColumn_Aをキャストできませんでした。 (DT_STR,3,1252)の最初の使用では、intのソースと同じデータ型を使用しないように、宛先の列をstringに設定するだけです。

実際にColumn_Aをintからstringにキャストするのは、(DT_STR,3,1252)です。

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 

これを実行すると、結果セットは1行になります。

これを変数にマップします。

データフロー内の派生列では、その変数を新しい列に設定できます。

関連する問題