SSIS正在将日期时间列导入SQL Server 2008
我正在尝试使用SSIS将PSV文件导入SQL Server 2008 除了一个包含SSIS正在将日期时间列导入SQL Server 2008,sql,ssis,dts,Sql,Ssis,Dts,我正在尝试使用SSIS将PSV文件导入SQL Server 2008 除了一个包含datatime的字段外,所有字段都正常工作 正在导入的文件的内容包含格式为的datetime 2012-08-08T13:31:28.170 PSV文件的文件连接器设置是精度为[DT_dbtimestamp 2]的数据库时间戳 SQL Server中的目标列具有datetime数据类型 SQL表的包/内容的结果是datetime导入: 2012-08-08 00:00:00.000 您将注意到分钟/秒尚未导入
datatime
的字段外,所有字段都正常工作
正在导入的文件的内容包含格式为的datetime
2012-08-08T13:31:28.170
PSV文件的文件连接器设置是精度为[DT_dbtimestamp 2]的数据库时间戳
SQL Server中的目标列具有datetime
数据类型
SQL表的包/内容的结果是datetime导入:
2012-08-08 00:00:00.000
您将注意到分钟/秒尚未导入
我一定是使用了错误的日期时间格式,但似乎尝试了所有组合都没有成功
有人能给我指出正确的方向吗?我曾经遇到过类似的情况,问题出在我的源代码上,而不是目标代码上 我建议您通过右键单击SourceComponent上的字段,选择Show Advanced editor->Input and Output properties->展开“Output columns”->Slect您的列并更改为propper数据类型(通常[DT_DBTIMESTAMP]对我来说很好)。同样为了测试,在“输出列”上执行相同的操作tl;博士 使用DT_DBTIMESTAMP作为您的类型,并将fastParse设置为true 设置 我创建了一个包含以下行的CSV。由于SQL Server的datetime精度仅为.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
我创建了我的目标表
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]
在我的数据流中,我添加了一个平面文件源,并使用了上面的连接管理器
然后我右键单击平面文件源并选择了显示高级编辑器
。在“输入和输出属性”选项卡上,我展开了平面文件源代码输出控件,再次展开了输出列,然后选择了我的EventDate。在自定义属性下,我将FastParse
的默认值从False更改为True
我有一个派生列,它添加了字符串类型值(DT_STR,201252)“DT_DBTIMESTAMP”
,这样我就可以跟踪哪些有效,哪些无效
我使用了一个OLEDB目标并将其连接到我创建的表
结果
从dbo.datetime2Demo中选择EventDate、string\u类型
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
我总是结合将
ValidateExternalMetadata
设置为false来执行此操作。如果我没有,我在输出/输入列中设置的值只需重置。你对此有什么建议吗,或者你也在这样做吗?你好,谢谢你的帮助。