乏mily

导航

Excel数据导入到SqlServer中

插入:

insert into tb1 
select
* from OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;HDR=YES;DATABASE=C:\test.xls','select*from [sheet1$]');

或者

insert into tb1
select * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test.xls;Extended Properties=Excel 8.0')...[Sheet1$]

 

可能出现错误

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭

解决办法

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

可能出现错误

链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 不包含表 "Sheet1$"。该表不存在,或者当前用户没有访问该表的权限。

解决办法:

查看你现在操作的数据库是否存在该表

 -------------------------------------------------------------------

 

INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET 'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0; HDR=YES; DATABASE=c:\\test.xls',sheet1$); 

 

需要注意的地方

1)外围应用配置器的设置。
    从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
2)关闭Excel表。
     如果在导入时要导入的Excel表格处于打开状态,会提示:
   “无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoft.jet.oledb.4.0" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的数据库表,则忽略首行。

 

posted on 2013-09-23 16:11  乏mily  阅读(166)  评论(0)    收藏  举报