2011-10-12 41 views
1

我有一個OLEDB連接到MSSQL和(使用ODBC驅動程序)的ado.net目的地到MySQL。這些表格完全相同,所有列都在工作欄中。SSIS(2008R2)從進口MSSQL到mysql失敗由於日期列

收到的錯誤消息是: [ADO NET Destination [325]]錯誤:在數據插入過程中發生異常,從提供程序返回的消息是:無法將類型爲「System.DateTime」的對象強制類型化'System.Char []'。

我見過的其他數據類型類似的問題,但改變字符串的決議並沒有在這裏工作。如果我轉換爲字符串(必須是長度爲29,否則轉換步驟失敗),我會收到以下錯誤消息:

[ADO NET Destination [325]]錯誤:數據插入期間發生異常,提供程序是:錯誤[HY000] [MySQL] [ODBC 5.1驅動程序] [mysqld-5.5.15]第1行'LastModificationDate'列的日期時間值錯誤:'2011-03-21 11:23:48.573000000'

其他潛在的相關細節: 連接驅動程序 - {MySQL的ODBC 5.1驅動} 腳本數據流之前運行 - 設置的sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES' 其它datetime列正在 本欄空的合理比例高 MSSQL規格:LastModificationDate] [日期時間] NULL MySQL的規格:LastModificationDate的datetime NULL

有沒有人有這個問題的經驗,並可以在解決它提供一些建議嗎?

回答

2

你可以試着在查詢其轉換爲字符串在SQL服務器端使用:

convert(char(10),LastModificationDate,111)+' '+convert(char(8),LastModificationDate,108) 

這工作對我所有的時間。

2

我這個星期得到了同樣大傷腦筋。我嘗試了很多方法。謝天謝地,其中一個人工作。希望它能幫助你一點點。

對於詮釋,日期時間,小數的數據類型的一些列......,在這裏,我認定爲ColumnA,我用它作爲時間類型。

1.in數據流量源,使用SQL命令來檢索數據。就像選擇isnull(ColumnA,'1800-01-01')一樣,ColumnA,C1,C2,...來自表 的Cn確保對前面提到的數據類型的所有列使用Isnull函數。

2.Excute的SSIS PKG。它應該工作。

3.返回控制流,在數據流任務下添加SQL Task控件以將數據替換回來。我的意思是,將ColumnA從'1800-01-01'更新爲空。

這對我很有用。在我的情況下,我不能使用忽略失敗選項。因爲如果我這樣做,我將損失數千行數據。