2013-02-15 20 views
0

我有一個文件要使用SSIS 2005加載到SQL Server 2005中。在錯誤輸出文本文件中更改了日期格式

該文件有一個日期字段。數值類似於'12/01/2010 16:38:51'

文件中的某些行是錯誤的,將被重定向到一個文本文件。但在文本文件中,SSIS會將日期更改爲2010-01-12 16:38:51

無論如何只是將錯誤行重定向到文本文件沒有任何修改?

+0

SSIS只是用與服務器配置相同的方式寫日期。更改您的區域設置以匹配第一個日期格式。 – 2013-02-15 15:40:51

+0

我無法更改區域設置。我的意思是輸入文件中的日期格式可以是不同的格式。我不會更改區域設置以適應導入文件。如果日期格式將來發生變化會怎樣?我的意思是不能ssis只是將重定向的行像字符串或其他東西一樣寫入文件? – thotwielder 2013-02-15 17:20:22

+2

是的,如果你定義了元數據,SSIS可以把它當作一個字符串。如果它更改格式,那是因爲您將輸入列映射爲日期。 – 2013-02-15 18:15:19

回答

0

我發現如果在平面文件源的高級編輯器的平面文件錯誤輸出的輸出列是「平面文件源錯誤輸出列」(和該列的類型應該是文本流[DT_TEXT]默認),那麼我的問題就解決了。這樣,錯誤輸出的平面文件管理器將自動將輸出列設置爲'平面文件源錯誤輸出列'和'文本流[DT_TEXT]'類型。這正是我想要的。 SSIS將整行視爲'文本流[DT_TEXT]'類型的單個列,然後重定向。這似乎是SSIS的默認行爲。但在我的原始軟件包中,我不知怎麼搞砸了,讓輸入中的每列都映射到錯誤輸出中的一列。然後有問題,因爲SSIS正在做日期轉換的事情。

無論如何感謝您的幫助。

0

您始終可以使用派生列並使用日期的部分格式化日期時間。

(DT_WSTR, 20) (DT_WSTR, 2) RIGHT("0" + (DT_WSTR,2)MONTH(<DATE_IN_QUESTION>),2) + "/" + 
(DT_WSTR, 2) RIGHT("0" + (DT_WSTR,2)DAY(<DATE_IN_QUESTION>),2) + "/" + 
(DT_WSTR,4)YEAR(<DATE_IN_QUESTION>) + " " + 
(DT_WSTR, 2)DATEPART("Hh", <DATE_IN_QUESTION>) + ":" + 
(DT_WSTR, 2)DATEPART("mi", <DATE_IN_QUESTION>) + ":" + 
(DT_WSTR, 2) RIGHT("0" + (DT_WSTR, 2)DATEPART("ss", <DATE_IN_QUESTION>),2)  
+0

是的,我知道派生列可以用來做任何需要的格式。但我的問題是重定向的行應保持原始格式,而不需要任何手動操作。 – thotwielder 2013-02-18 11:02:17