2009-06-25 91 views
3

我正嘗試使用SSIS將Excel 2003中的電子表格中的日期列導入到SQL Server 2005中。我在英國,所以想要日期格式爲dd/MM/yyyy。使用SSIS for Excel將日期格式問題導入到SQL Server中

不幸的是,電子表格中的列包含以dd/MM/yyyy(使用Excel'常規'格式)字符串形式存儲的日期以及使用Excel格式化日期格式dd/MM/yyyy locale'英語(英國)')。

這只是它的方式,我不能指望用戶能夠自己解決這個問題。

查看電子表格時,所有日期在視覺上都顯示爲正確,即dd/MM/yyyy。

我想將值導入數據庫中的保存表中的varchar列。然後我運行一個存儲過程,將這些值複製到包含datetime列的適當表中。

問題是,存儲在電子表格中並使用日期格式的日期會以MM/dd/yyyy格式導入到SQL Server中,並且以字符串形式存儲的日期會以dd/MM/yyyy格式導入。在連接字符串中我有IMEX = 1。

在同一VARCHAR列使用這兩種格式將日期顯然是造成問題,當我試圖把它變成一個datetime列,因此

SET DATEFORMAT MDY;  
SET DATEFORMAT DMY; 

都是沒有用的。

有沒有人知道爲什麼SSIS包會將Excel電子表格中看似正確的日期導入到SQL Server中作爲MM/dd/yyyy呢?

有沒有辦法強制SSIS包導入日期爲dd/MM/yyyy,該日期可以與日期格式應用的字符串和單元格一起使用?

其他想法?

非常感謝,

安東尼

回答

2

我想你已經回答了你自己的問題。日期格式化單元格的導入被視爲日期,其他視爲字符串。可能你的SQL服務器日期設置是MM/dd/yyyy,因此轉換。

爲什麼不嘗試在您的SSIS包中添加數據轉換步驟,並將列中的每個元素轉換爲單一格式 - 日期時間或字符串。然後我相信SQL服務器會以同樣的方式處理它們。

拉吉

1

什麼工作對我來說是增加IMEX=1對Excel連接字符串。

因此,這將是這樣的:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";