我先描述一下我遇到的问题:
装完windows server系统,别急着先装office,先装:(当然,如果你装的是office 2007及以上版本,那可以省略这一步)
下载地址:
http://www.baidu.com/s?wd=AccessDatabaseEngine_X64下载&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-8&rsv_n=2&rsv_sug3=1&rsv_sug1=1&rsv_sug4=63&inputT=2964
然后导入数据直接用下列SQL语句,选好数据库:(前提,excel里边的字段要和表里边的字段一一对应)
INSERT INTO 表名 SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Excel5.0;HDR=YES;DATABASE=g:\老客户资料.xls',结果$)
解说一下,上边的SQL语句是连接在一起的;G:\老客户资料.xls是你要导入的excel的路径;结果 是你excel里边左下角有数据的选项卡的名字。其他地方不要改动。
基本上可以导入了!还会出现截断的错误,那就是其他列真有溢出。回答结束
******************************************************
一般我们导入数据,直接就是右击数据库→导入,然后选择excel,然后选择相应的表直接导入
我就是通过上述这常规方法导入,出错!结果一条一条排查,最后发现:每10条导一次是可以全部导入的,包括我们认为可能错误的行数都可以正确输入,但10条10条的导入,数据多了,你就死了!
然后运行下边SQL语句:
INSERT INTO zsb_customer SELECT * FROM OPENROWSET('MICROSOFT.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=g:\老客户资料.xls',结果$)
其中《老客户资料》就是你要导入的excel名
INSERT INTO zsb_customer SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Excel 5.0;HDR=YES;DATABASE=g:\老客户资料.xls',结果$)
消息 7308,级别 16,状态 1,第 1 行
因为 OLE DB 访问接口 'MICROSOFT.JET.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。