2013-02-01 15 views
1

下午好,使用導入嚮導導入平面文件時出現「日期格式無效」

我有一個困惑,我無法弄清楚。我正在嘗試在SQL數據庫表中導入平面文件,但遇到問題。 SQL中的我的列是出生日期DOB的日期時間列。提供給我的提取平面文件具有此列日......因此,當我輸入蛋白到SQL我越來越:

Messages 
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. 
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Invalid date format". 
(SQL Server Import and Export Wizard) 

Error 0xc020901c: Data Flow Task 1: There was an error with input column "DOB" (212) on input "Destination Input" (147). The column status returned was: "Conversion failed because the data value overflowed the specified type.". 
(SQL Server Import and Export Wizard) 

Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "Destination Input" (147)" failed because error code 0xC020907A occurred, and the error row disposition on "input "Destination Input" (147)" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure. 
(SQL Server Import and Export Wizard) 

我試圖找出如何添加一個隨機的時間像00:00:00.000到平面文件中的每個DOB。例如,他們發給我1983-11-30但我想用1983-11-30 00:00:00.000

有沒有辦法做到這一點,或者有沒有人有我能做什麼的想法?在此先感謝

+2

這不應該是一個問題(至少,不是你想象的那個)。當DATETIME列僅收到日期時,它會自動假定時間爲「00:00:00.000」。這裏最可能出現的問題是日期格式,SQL Server可能假設日期的格式是'YYYY-DD-MM'而不是'YYYY-MM-DD'。 – Lamak

+0

在運行之前嘗試執行SET DATEFORMAT ymd批量插入。 –

+0

謝謝....我認爲我的問題是其他地方...我跑了一個通過格式保持不變,它假設0就像你想的。謝謝 –

回答

1

MSSQL將沒有問題將yyyy-MM-dd字符串像您的字符串轉換爲日期。你將自動結束00:00:00.000。您發佈的錯誤消息「轉換失敗,因爲數據值溢出了指定的類型」表示其中一個日期超出了有效範圍。您最有可能得到無效的出生日期(查找0000-00-00記錄或類似信息)。如果平面文件以Excel輕鬆解析的方式分隔,請將其拉​​入Excel並對該列進行排序。查看最小值和最大值,您可能會發現違規記錄。

+0

謝謝....現在就這樣做。我很感激。我確實發現了你所說的151個事件。它仍然在發生,但我確定有其他東西在那裏。我現在將文件從服務器傳送到我的電腦,因爲服務器沒有excel。它有160萬行 –

0

這是舊的,但我在我的SSIS數據流任務中有類似的問題,希望這可能有助於某人:對我來說,解決方案是檢查「保留null值作爲數據流中的空值「選項在平面文件源編輯器窗口(在連接管理器頁面中)

1

我的情況有點不同,但我覺得張貼它可以幫助其他人。與OP不同,我將數據從Access 2000 mde文件導入到sql server management studio,但與OP類似,我遇到了「無效數據格式」錯誤。我知道衝突是由於訪問文件中DateTime類型的列與sql中的DataTime格式衝突而造成的。

解決方案:當我通過右鍵單擊sql server management studio - > Tasks - >導入數據然後選擇源(訪問),目的地(sql服務器)和要導入的表,我注意到由於類型問題,傳輸了0行。但是,在SQL Server Management Studio中爲我創建的表代表了我試圖從訪問表導入的表。它有正確的列和它們相關的數據類型。

所以我所做的就是我右單擊表,以進入設計視圖,並改變了DataTime列的所有數據類型只是Date

然後我重做了進口數據進程,併成功傳輸行。

0

我發現將數據庫從本地EXPRESS複製到我的生產服務器時,表定義爲smalldatetime而不是datetime。在選擇表格的嚮導中,可以選擇編輯映射。在那裏你可以改變你的數據類型。

相關問題