使用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";