SQL导入Excel文件的实例分享

发布时间:2019-12-16编辑:脚本学堂
本文介绍下,在sql server中使用sql语句导入excel文件的方法,分为office2003与office2007两种方式,有需要的朋友参考下。

分享下sql导入excel文件的方法。

如果表已存在,sql语句为:
 

复制代码 代码示例:
insert into aa select * from OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
''Data Source=D:/OutData.xls;Extended Properties=Excel 8.0'')...[sheet1$]

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$
 
如果表不存在,SQL语句为:
 

复制代码 代码示例:
SELECT * INTO aa FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
''Data Source=D:/OutData.xls;Extended Properties=Excel 8.0'')...[sheet1$]

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$,outdata.xls必须在SQL电脑
可能会发生的异常: 
如果发生“链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel文件未关闭。
 
如果发生“不能将值 NULL 插入列 ''Grade'',表 ''student.dbo.StuGrade'';列不允许有空值。INSERT 失败。
语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配。
 
以上操作的是office 2003。

如果要操作office 2007则需采用如下方式。
 
如果表已存在,SQL语句为:
 

复制代码 代码示例:
insert into aa select * from OPENDATASOURCE(''Microsoft.Ace.OLEDB.12.0'',
''Data Source=D:/OutData.xls;Extended Properties=Excel 12.0'')...[sheet1$]

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$
 
如果表不存在,SQL语句为:
 

复制代码 代码示例:
SELECT * INTO aa FROM OPENDATASOURCE(''Microsoft.Ace.OLEDB.12.0'',
''Data Source=D:/OutData.xls;Extended Properties=Excel 12.0'')...[sheet1$]

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$
 
如果发生“链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel文件未关闭.
 
 
如果发生“不能将值 NULL 插入列 ''Grade'',表 ''student.dbo.StuGrade'';列不允许有空值。INSERT 失败。
语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配
以上操作的是office 2003,如果要操作office 2007则需采用如下方式
 
另外,还要对一些功能进行配置:
1、打开SQL Server 2005外围应用配置器,选择“功能的外围应用配置器”,选中“启用OPENROWSET或OPENDATASOURCE支持”,点击确定。
2、在C:/WINDOWS目录下将temp文件夹的安全选项卡中,在用户或组名称中,选择“SQLServer2005ReportingServicesWebServiceUser$PC17$MSSQLSERVER(PC17/SQLServer2005ReportingServicesWebServiceUser$PC17$MSSQLSERVER”用户,将此用户的写入,修改权限选中。点击确定。(设置它是因为将此将excel文件读入sql数据库时,是在C:/WINDOWS/temp下建立了一个临时文件,所以需要将此文件夹的SQLServer2005权限设置为可写入的。
如果使用的是管理员帐户,则需要不需此项设置。因为管理员有读写的权限。)