今天同事给客户处理基础物料信息,要把Excel中的几千行物料信息导入到数据库。觉得不是啥难事,写个SQL语句而已,没成想,实际一操作,出问题了。
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECT * FROM [Sheet1$]')
报错:因为 OLE DB 访问接口 'MICROSOFT.JET.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。
搜了下,原因是当前用的是64位的Win7, 但是安装的Office是32位的Office2007。为了以后也方便,干脆就卸了2007装64位的office2010。
找个64位的office2010也是个麻烦事,网上的链接都是指向WPS。好歹找了个,费了点时间卸载、安装、重启。
另外还参照网上的帖子装了个:AccessDatabaseEngine_X64.exe
修改下SQL语句,重新操作:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\mat.xls', 'SELECT * FROM [Sheet1$A:F]')
或
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\mat.xls', 'SELECT * FROM [Sheet1$]')
O了,没问题了:
参考:
(1)http://tech.ddvip.com/2014-09/1409571606212952.html
(2)http://www.cnblogs.com/stublue/archive/2010/10/12/1848995.html