SSIS将datetime列导入SQL Server 2008

Pau*_*way 8 sql ssis dts

我正在尝试使用SSIS将PSV文件导入SQL Server 2008.

除了一个包含a的字段外,一切正常datatime.

正在导入的文件的内容包含日期时间,格式为

2012-08-08T13:31:28.170
Run Code Online (Sandbox Code Playgroud)

PSV文件的文件连接器设置是精度为[DT_DBTIMESTAMP2]的数据库时间戳

SQL Server中的目标列具有datetime数据类型.

SQL表的包/内容的结果是日期时间导入:

2012-08-08 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

您会注意到尚未导入分钟/秒.

我必须使用错误的日期时间格式,但似乎已尝试所有组合但没有成功.

谁能指出我正确的方向?

bil*_*nkc 8

TL;博士

使用DT_DBTIMESTAMP作为您的类型并将fastParse设置为true

建立

我创建了一个包含以下行的CSV.由于SQL Server的日期时间精度仅为.003ms,因此可确保出现任何舍入问题

2012-08-08T13:31:28.170
2012-08-08T13:31:28.171
2012-08-08T13:31:28.172
2012-08-08T13:31:28.173
Run Code Online (Sandbox Code Playgroud)

我创建了目标表

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]
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个名为dt_dbtimestamp的连接管理器,并在Advanced下定义了一个列,其名称为EventDate,数据类型为database timestamp [DT_DBTIMESTAMP]

在我的数据流中,我添加了一个平面文件源并使用了上面的连接管理器.

然后我右键单击平面文件源并选中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
Run Code Online (Sandbox Code Playgroud)


Die*_*ego 7

我遇到类似的问题,问题出在我的来源上,而不是目的地.

我建议您通过右键单击SourceComponent上的字段,选择Show Advanced editor - > imput和Output properties - > Expand"Output columns" - >选择列并更改为propper数据类型(通常是[DT_DBTIMESTAMP]工作)对于我来说足够了).同样为了测试,在"输出列"上执行相同的操作