2

独自のODBCデータベースからSQLServerデータベースにデータベースをコピーするための小さなユーティリティを作成しています。SQLBulkCopyを使用してデータをコピーする場合を除いて、すべてが正常に機能しています。ほとんどの場合は機能しますが、TIMEフィールドをSQLDATETIMEにコピーしようとしている場合は機能しません。このエラーが発生します:

データソースからのTimeSpan型の指定された値は、指定されたターゲット列のdatetime型に変換できません。

SQL Serverでスキーマを作成するときは、SQL ServerでDATEフィールドとTIMEフィールドをDATETIMEタイプにする必要があるため、これを回避する方法はありません。SQLBulkCopyを使用したかったので、すべてのテーブルのすべてのレコードを手動で読み取り、特殊なケースにロジックをラップする必要はありませんでした。その道を進む前に、これを行う別の方法はありますか?ソースデータベースのスキーマやコンテンツをまったく制御できません。

4

1 に答える 1

1

SQLServer2008より前のデータを扱っていると思います。SQLServer2008にはDATEデータ型とTIMEデータ型があります。

SQL Serverスキーマに一致するDataTableを使用し、これをソースリーダーからロードして、日付情報を追加することにより、任意のTIMEをDATETIMEに適切に変更する必要があると思います(例:1/1/1900)。次に、WriteToServer(DataTable)を使用します。大量のメモリを使用してすべてをDataTableに読み込むことができるため、バッチで実行することをお勧めします。

SSISを使用できない特別な理由はありますか?

于 2010-07-26T01:53:10.603 に答える