2012-04-21 3 views
2

私はmm/dd/yyyy(2012年4月20日)の形式の日付列を持つCSVファイルを持っています。この列をdatetime列のあるデータベースにロードする必要があります。yyyy-mm-dd(2012-04-20)私は私のパッケージを実行している時には、この目的のために派生列変換を使用して書かれたとファイルのmm/dd/yyyy値をyyyy-mm-dd形式のデータベースフィールドにインポートするにはどうすればよいですか?

(DT_WSTR)(SUBSTRING(ReceivedDateTime,1,4) + "-" + 
SUBSTRING(ReceivedDateTime,5,2) + "-" + SUBSTRING(ReceivedDateTime,7,2)) 

のような表現している

、それはUnable to perform type castエラーを投げています。

+0

DT_WSTRの代わりにDT_DBTIMESTAMPにキャストしてください。 –

答えて

3

CSVファイルからの受信値が常に04/20/2012MM/DD/YYYY)のようにフォーマットされている場合、タイプキャストを実行する必要はありません。ファイルの値をdateデータ型として扱うように、フラットファイル接続マネージャーを構成するだけです。

あなたのCSVファイルは、次のようなもので、日付を含む単一の列であるとします。 SSISパッケージで

CSV file

、CSVファイルを読み込むためにフラットファイル接続マネージャを作成します。私はパスAdvancedセクションでC:\temp\Source.csv

Flat file source general section

にCSVを格納し、あなたはフラットファイル接続マネージャがColumn1として最初の列の名前とデータ型プロパティがstring [DT_STR]に設定されていることがわかります。ただし、ファイル内の値は実際には日付です。データタイプを手動で設定することも、Suggest Types...ボタンをクリックすることもできます。

Advanced Suggest Types

列タイプを提案、デフォルト値のままにしてOKをクリックします。これにより、ファイルの最初の100行が読み込まれ、ファイルで使用可能なデータに応じて列の種類が決定されます。

Suggest column types

あなたはOKをクリックすると列タイプダイアログを提案する、あなたはColumn 0のためのフラットファイル接続マネージャのデータ型はdate [DT_Date]に変更されていることがわかります。 OKをクリックして、フラットファイル接続マネージャーを構成します。あなたも今、あなたが設定フラットファイル接続マネージャを持っていることを、あなたはフラットファイル内で使用することができます

Data type changed

(たとえば InvoiceDateまたは 受注日など)必要に応じて列の名前を変更することができますデータフロータスク内のソースを使用してデータを読み取り、データベースにデータを取り込みます。したがって、派生列変換を使用して値を操作する必要はありません。

ただし、着信ファイルの値が120420 (YYMMDD)のような文字列の場合、これらの値を日付データ型として構成することはできません。これらのシナリオでは、派生列変換をsuggested in this answerとして使用する必要があります。

希望に役立ちます。

0

はジャスト(DT_DBDATE)との声明を型キャスト

(LEN(TRIM(SUBSTRING(ReceivedDateTime,1,8))) > 0 ? (DT_DBDATE)(SUBSTRING(ReceivedDateTime,1,4) + "-" + SUBSTRING(ReceivedDateTime,5,2) + "-" + SUBSTRING(ReceivedDateTime,7,2)) : (DT_DBDATE)NULL(DT_WSTR,5)) 

(私はこれを行うことに成功した)、以下のことを試してみてください。また、その位置に日付がない場合、つまり受け取った文字列の1から8の位置が空白の場合はNULLを挿入します。

1

入力値が文字列20140106(YYYYMMDD)の場合、ステートメントを(DDT_DBDATE)とタイプキャストするとエラーが発生します。

(LEN(TRIM(SUBSTRING([Screening Date],1,8))) > 0 ? (SUBSTRING([Screening Date],1,4) + "/" + SUBSTRING([Screening Date],5,2) + "/" + SUBSTRING([Screening Date],7,2)) : NULL(DT_WSTR,5)) 

後、私は、データ変換の変換を追加し、データベースのタイムスタンプにそれを変更し、それが私の仕事:私はので、私は型キャスト を取り出し、マッピングはこのように見えたこの問題に遭遇していました。タイプ日付(DT_DATE)に変更することもできます。

ありがとうございます!

関連する問題