sql server 读取excel里的数据

Posted sevene

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 读取excel里的数据相关的知识,希望对你有一定的参考价值。

以下是执行的sql代码,只拿简单读取数据举例,其他详细的,请自行查看

exec sp_configure show advanced options,1
reconfigure
exec sp_configure Ad Hoc Distributed Queries,1
RECONFIGURE
GO
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NAllowInProcess, 1
EXEC master.dbo.sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0, NDynamicParameters, 1
GO
SELECT *
FROM OPENROWSET(Microsoft.ACE.OLEDB.12.0,Excel 12.0;Database=C:\Users\beige\Desktop\sqltoexcel\Data.xlsx;hdr=yes;imex=1, ICD$)

Go
SELECT *
FROM OPENROWSET(Microsoft.ACE.OLEDB.12.0,Excel 12.0;Database=C:\Users\beige\Desktop\sqltoexcel\Data.xlsx;hdr=yes;imex=1, CMS$)
GO
exec sp_configure Ad Hoc Distributed Queries,0
reconfigure
exec sp_configure show advanced options,0
reconfigure 

执行报错时,尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0"。

这个错误需要安装AccessDatabaseEngine_X64.exe驱动,选择相应版本下载

下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255

另外,很重要的一点是:执行以上sql语句的数据库必须是本地数据库,

否则报错为

链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 的数据源对象。

下面总结解决方式:
1、在SQL Server 外围应用配置器中启用 OpenRowSet 和 OpenDataSource函数
2、执行以上sql语句的数据库必须是本地数据库,如果为远程的数据库就会报上面的错误
3、链接字符串 Extended Properties属性的内容要以分号间隔并用双引号括起来,sheet1$ 在括号外
4、注意office的版本4.0是office2003,12.0是office2007的版本,看看是否装了驱动。
5、最为关键的是要看sql server 版本号,是32位的还是64位的。x64位的sql server很多的office的驱动是不支持的。

 






以上是关于sql server 读取excel里的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

sql server游标读取excel文件数据,更新到指定表中

Python 批量处理 Excel 数据后,导入 SQL Server

SQL Server 读取Excel 2003

无法从具有多个 SQL Server 版本的 SQL Server 读取 Excel 文件

把 Excel 文件导入 SQL Server 中出现大量的空列 如何不出现空列呢,或怎么迅速删除