2012-10-19 44 views
1

我使用一個平面文件作爲具有幾列屬於日期格式的源,並且我已將所有數據放入預定義的SQL Server表中。從文本文件到SQL Server日期時間的日期數據

例子: -

平面文件

CaseNO|CaseType|CDate 
1  |ORG  |1\12\2012 
2  |PGD  |3\3\2011 

這裏的時候,我用數據瀏覽器,它看起來像2012年12月1日00檢查:00:00.0000000。但OLE DB連接會創建以下錯誤。

[OLE DB Destination [7546]] Error: There was an error with input column 
"CDate" (8799) on input "OLE DB Destination Input" (7559). The column status 
returned was: "The value could not be converted because of a potential loss of data.". 

請指導我...讚賞你的幫助。

+0

我的第一個猜測將是一個記錄有一個不好的價值。你可以嘗試導入前幾行,以確保它不是一個通用的問題。 – SQLMD

+0

目標表中的CDate的列數據類型和CDate id數據流的數據類型是什麼? –

回答

0

這可能是因爲反斜槓。在投射前嘗試用「/」替換「\」。

這也可能是日期格式問題。根據整理等設置,「1/2/2012」可能被解釋爲1月2日或2月1日。這不會導致問題,但類似「2012年1月31日」可能會導致錯誤的類型轉換錯誤整理,因爲沒有一個月31.

+0

感謝你幫助Bian ...我認爲這是問題,現在仍然沒有數據進入我的目標表,我試圖將平面文件數據上傳到它。在平面文件中,以mm-dd-yy格式顯示日期,其中我檢查了其他表格(2012-09-14 14:01:18.593)yy-dd-mm hh.mm.ss.ms ....但可以請告訴我如何將其更改爲所需的格式? – 343

+0

您只需將值轉換爲datetime即可。在源和目標之間添加派生列。將派生列名CDateTime和粘貼(DT_DBTIMESTAMP)REPLACE(CDate,「\\」,「/」)作爲表達式值。現在將CDateTime映射到OLE DB目標中的相應列。 – brian

0

它看起來像你已經把數據放入sql服務器表。使用SQL命令而不是選擇OLEDB源中的表。按如下方式編寫查詢並映射到目標。

選擇ID,CaseType,從

轉換(日期時間,CDATE,101)作爲CDATE如果您使用平面文件到目標表中直接載入。你應該使用派生列轉換來解析它,以提及格式[dd/mm/yyyy]並將其轉換爲datatime。

感謝, Gowdhaman

相關問題