SSISを使用してPSVファイルをSQLServer2008にインポートしようとしています。
datatime
を含む1つのフィールドを除けば、すべて正常に機能しています。
インポートされるファイルの内容には、次の形式の日時が含まれています。
2012-08-08T13:31:28.170
PSVファイルのファイルコネクタ設定は、精度の高いデータベースタイムスタンプです[DT_DBTIMESTAMP2]
SQLServerの宛先列にはdatetime
データ型があります。
SQLテーブルのパッケージ/コンテンツの結果は、日時インポートです。
2012-08-08 00:00:00.000
分/秒がインポートされていないことに気付くでしょう。
間違った日時形式を使用している必要がありますが、すべての組み合わせを試しても成功しなかったようです。
誰かが私を正しい方向に向けることができますか?
かつて、問題が宛先ではなくソースにあるという同様の状況がありました。
SourceComponentのフィールドを右クリックし、[高度なエディターの表示]-> [入力および出力プロパティ]-> [[出力列]の展開]-> [列を選択]を選択して、適切なデータ型に変更することをお勧めします(通常は[DT_DBTIMESTAMP]が機能します)私にとっては問題ありません)。また、テストのために、「出力列」でも同じことを行います。
タイプとしてDT_DBTIMESTAMPを使用し、fastParseをtrueに設定します
次の行でCSVを作成しました。 SQL Serverの日時の精度は.003ミリ秒しかないため、これにより、丸めの問題が確実に発生します。
2012-08-08T13:31:28.170
2012-08-08T13:31:28.171
2012-08-08T13:31:28.172
2012-08-08T13:31:28.173
ターゲットテーブルを作成しました
CREATE TABLE [dbo].[datetime2Demo]
(
[EventDate] [datetime2](7) NOT NULL
, [insert_date] [datetime2](7) NOT NULL DEFAULT(current_timestamp)
, [string_type] [varchar](50) NULL
) ON [PRIMARY]
次に、dt_dbtimestampという名前の接続マネージャーを作成し、Advancedの下にEventDate
という名前とdatabase timestamp [DT_DBTIMESTAMP]
のデータ型で1つの列を定義しました。
データフローでは、フラットファイルソースを追加し、上記の接続マネージャーを使用しました。
次に、フラットファイルソースを右クリックして、Show Advanced Editor
を選択しました。 [入力と出力のプロパティ]タブで、フラットファイルソースの[出力]コントロールを展開し、[出力列]を再度展開して、[EventDate]を選択しました。 [カスタムプロパティ]で、FastParse
のデフォルト値をFalseからTrueに変更しました
String_type値(DT_STR,20,1252)"DT_DBTIMESTAMP"
を追加した派生列があったので、何が機能し、何が機能しなかったかを追跡できました。
OLE DB宛先を使用し、作成したテーブルに接続しました。
SELECT EventDate、string_type FROM dbo.datetime2Demo
EventDate string_type
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-08 13:31:28.1700000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1710000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1720000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1730000 DT_DBTIMESTAMP