1

私は SSIS 2008 を初めて使用し、現在、古い Advantage データベースから SQL Server 2005 にデータを移行する作業を行っています。移行元と移行先を持つデータフロー オブジェクトを使用して SSIS パッケージをセットアップしました。ほとんどの列をコピーすると問題なく動作しますが、Advantage Timestamp 列を DateTime フィールドにコピーしようとすると、多くのエラーが発生します。これらはすべてオーバーフロー エラーであると思います。これは、Advantage がタイムスタンプ情報を保存する方法から理解できます。私の質問は、この列を SQL Server 2005 の正しい DATETIME フィールドに変換する最良の方法は何ですか?

少し考えてみると、Advantage TimeStamp 列を varchar 列にコピーし、変換を行う SQL スクリプトを実行できると感じました。もっとエレガントな方法があるのか​​ 、それともこの種の問題に対する通常の解決策は何なのかと思っていました。

あなたの助けと提案をありがとう!

4

2 に答える 2

2

データ フローでは、派生列変換を使用できます。アドバンテージ タイムスタンプを SQL Server DATETIME (DT_DBTIMESTAMP) データ型にキャストしてみてください (これは SQL Server TIMESTAMP データ型ではないことに注意してください)。派生列変換で、新しい列に次の式を入力して、データ型を変換します。

(DT_DBTIMESTAMP) [MyDate]

これが失敗した場合は、文字列 (DT_STR, <>, <>) への型キャストを実行してから、文字列関数を使用して文字列を操作し、単一の式で DT_DBTIMESTAMP への型キャストを行うことができます。

(DT_DBTIMESTAMP) (...string functions...(DT_STR, 20, 1252)[MyDate])
于 2011-01-13T19:04:52.877 に答える
0

Timestampはデータ型であり、日付または時刻データとは関係ありません。

于 2011-02-02T13:31:51.813 に答える