如果我把我的頭撞到桌子上,我還有一次可能會永遠消失。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的有效日期時間。
任何人都知道可能是什麼問題?
它認爲Excel中的列是哪種數據類型?如果你在Excel中專門將其格式設置爲GENERAL或TEXT,會怎麼樣?我懷疑Excel格式是否隱藏了Excel中的實際底層價值。你在哪裏看到這個來源日期?在Excel中還是在SSIS中的數據瀏覽器中?如果將Excel保存爲CSV,檢查它以驗證這確實是數據的格式並導入它,會發生什麼情況?您可能會告訴我不信任Excel。 – 2013-04-03 23:54:06
還將其導入到VARCHAR而不是DATETIME字段中,以再次檢查數據的真實性質。當我插入表格時,我也只使用了一個日期格式_而不是T標誌符(一個空格)。 – 2013-04-03 23:56:08
@ElectricLlama Excel格式化幾乎總是隱藏/掩蓋真實的基礎值,特別是Excel可以解釋爲日期的日期或值。 – 2013-04-04 00:35:58