2013-04-03 85 views
0

如果我把我的头撞到桌子上,我还有一次可能会永远消失。excel和sql之间的SSIS日期时间转换问题

来源:Excel中

数据:2012-10-05T11:14:00

转换:

2012-10-05T11:14:00在Excel中字符串[DT_STR]

目的地:SQL

列数据类型:日期时间

我不断收到以下错误:

[PostBindInspectionsBucket [20]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生了OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005描述:“转换规范的字符值无效”。

[PostBindInspectionsBucket [20]]错误:在输入“OLE DB目标输入”(33)的输入列“RequestTimestamp Copy”(112)时发生错误。返回的列状态是:“由于潜在的数据丢失,无法转换该值。”

[PostBindInspectionsBucket [20]]错误:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。由于错误代码0xC0209077发生,“输入”OLE DB目标输入“(33)”失败,并且“输入”OLE DB目标输入“(33)”上的错误行配置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,提供有关失败的更多信息。

[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。处理输入“OLE DB目标输入”(33)时,组件“PostBindInspectionsBucket”(20)上的ProcessInput方法失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误是特定于组件的,但错误是致命的,并且会导致数据流任务停止运行。在此之前可能会发布错误消息,提供有关失败的更多信息。

我在做什么错?来自Excel的格式是有效的日期时间格式。

我创建了一个类型为“datetime”的列表,然后粘贴了它“2012-10-05T11:14:00”,它工作正常。

我也跑了

SELECT ISDATE('2012-10-05T11:14:00') 

和它的返回1,这意味着它在SQL的有效日期时间。

任何人都知道可能是什么问题?

+0

它认为Excel中的列是哪种数据类型?如果你在Excel中专门将其格式设置为GENERAL或TEXT,会怎么样?我怀疑Excel格式是否隐藏了Excel中的实际底层价值。你在哪里看到这个来源日期?在Excel中还是在SSIS中的数据浏览器中?如果将Excel保存为CSV,检查它以验证这确实是数据的格式并导入它,会发生什么情况?您可能会告诉我不信任Excel。 – 2013-04-03 23:54:06

+0

还将其导入到VARCHAR而不是DATETIME字段中,以再次检查数据的真实性质。当我插入表格时,我也只使用了一个日期格式_而不是T标志符(一个空格)。 – 2013-04-03 23:56:08

+0

@ElectricLlama Excel格式化几乎总是隐藏/掩盖真实的基础值,特别是Excel可以解释为日期的日期或值。 – 2013-04-04 00:35:58

回答

0

这里的问题是“T”。

我从字符串中删除了T。