2017-02-10 12 views
0

SSISとそのデータ型が比較的新しいです。コンマ区切りの.txtフラットファイルからSQL Serverにデータをインポートするデータフロータスクを作成しました。タスクを実行するときにエラーが.txtファイルの日付フィールドがNullに0と日付フィールドを変換する派生列発現のために0ゼロ付き日付フィールドのSSISパッケージ - 派生列の条件式

image description

を持っている時点で、私が来て、発生しました

データ型「DT_WSTR」と「DT_I4は、」互換性がありません:

[Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date] 

...これまでのところ、以下の...しかし、ロジックが受け入れられ、エラーメッセージが表示されていないとアップbのためにinary演算子 "=="。オペランド型を暗黙的に互換性のある型にキャストすることはできませんでした。この操作を実行するには、一方または両方のオペランドをキャスト演算子で明示的にキャストする必要があります。

ありがとうございます。

+1

"最新の請求期限"はユニコード(DT_WSTR)であるように見えます。 [最新の請求期限] == "0"の前後に引用符を追加しますか? NULL(DT_DATE):(DT_DATE)[最新の請求期限] –

+0

ありがとうございます。この質問を書くことで、比較のどちらの側のデータ型も同じ型でなければならないJavaプログラミングクラスが覚えました。ソースフィールドは文字列として認識されています。最終的なコードが動作します(ソースデータでYYYYMMDDフォーマットを処理するために必要なSUBSTRINGを含みます): LTRIM([最新の請求期限])== "0"? [最新の請求期限]、1,4)+ " - " + SUBSTRING([最新の請求期限]、5,2)+ " - " + SUBSTRING([最新の請求書期日]、7,2)) –

答えて

0

テキストファイルに00000000の値があり、datetime列でnullに変換しなければならないとき、同様の問題が発生しました。私のために働いていたのはnullの値をdefaultという値でテーブルをstablishingし、さらにスクリプトコンポーネントを変換として追加することでした。 「VerifyNullDateVar」のような列出力のものとして追加して、スクリプト内DATEVAR

if (Row.DATEVAR == 0) { //do whatever you want to do if the input value is an actual date Row.VerifyNullDateVar = 2; } else Row.VerifyNullDateVar = 1; 

ようにあなたがテキストファイルから取得した入力欄で何かをします。その後、VerifyNullDateVar
から値を読み取るために派生列を使用し

  1. VerifyNullDating == 1
  2. VerifyNullDating == 2

最後に、あなたは2 OLEDB先を設定する必要があり、あなたが日付を保存することができます1テーブルの値。あなたが何かを保存したときにもう1つはデフォルトになりますnull

関連する問題