Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS正在将日期时间列导入SQL Server 2008_Sql_Ssis_Dts - Fatal编程技术网

SSIS正在将日期时间列导入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 您将注意到分钟/秒尚未导入

我正在尝试使用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
您将注意到分钟/秒尚未导入

我一定是使用了错误的日期时间格式,但似乎尝试了所有组合都没有成功


有人能给我指出正确的方向吗?

我曾经遇到过类似的情况,问题出在我的源代码上,而不是目标代码上

我建议您通过右键单击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来执行此操作。如果我没有,我在
输出/输入列中设置的值只需重置。你对此有什么建议吗,或者你也在这样做吗?你好,谢谢你的帮助。