使用SSIS for Excel将日期格式问题导入到SQL Server中

问题描述:

我正尝试使用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,该日期可以与日期格式应用的字符串和单元格一起使用?

其他想法?

非常感谢,

安东尼

我想你已经回答了你自己的问题。日期格式化单元格的导入被视为日期,其他视为字符串。可能你的SQL服务器日期设置是MM/dd/yyyy,因此转换。

为什么不尝试在您的SSIS包中添加数据转换步骤,并将列中的每个元素转换为单一格式 - 日期时间或字符串。然后我相信SQL服务器会以同样的方式处理它们。

拉吉

什么工作对我来说是增加IMEX=1对Excel连接字符串。

因此,这将是这样的:

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