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 N‘Microsoft.ACE.OLEDB.12.0‘, N‘AllowInProcess‘, 1
EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘DynamicParameters‘, 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的驱动是不支持的。

时间: 2024-10-11 13:00:45

sql server 读取excel里的数据的相关文章

使用NPOI读取Excel里的数据

DataTable dt = new DataTable(); using (FileStream file = new FileStream(@"C:\Users\Administrator\Desktop\导入datatable\导入datatable\OK.xlsx", FileMode.Open, FileAccess.Read)) { XSSFWorkbook hssfworkbook = new XSSFWorkbook(file); NPOI.SS.UserModel.I

SQL Server 读取CSV中的数据

测试: Script: create table #Test ( Name nvarchar(10), Age int, T nvarchar(10) ) BULK INSERT #Test From 'I:\AAA.csv' with( fieldterminator = ',', rowterminator = '\n' ) select * from #Test drop table #Test Result: Name Age TTestA 13 AugTestB 14 AppTestC

epplus读取excel里的数据

FileStream fs = new FileStream(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); using (ExcelPackage pck = new ExcelPackage(fs)) { ExcelWorksheet ws = pck.Workbook.Worksheets[1]; int minColumnNum = ws.Dimension.Start.Column;//

Sql server与Excel的数据互通导入导出

现在,我先从Sql server数据表导出到Excel中,再从Excel数据表导出到Sql server中: 一.Sql server数据表导出到Excel中: 1.新建一个Excel,选择"数据"菜单: 2.依次选择   "导入外部数据"--"导入数据" 后: 3.双击"新的SQL Server 连接.odc": 4.点击"下一步": 5.点击"下一步": 6.点击"完成&q

[译]SQL Passion Week 2: SQL Server的基本存储单位--数据页

Week 2: SQL Server的基本存储单位--数据页 上周我们我们讲述了SQL Server如何执行一个查询, 顺带提到了数据页的概念, 这次我们从性能调优的角度上更详细深入的讲解一些数据页. 数据页是SQL Server最基础的存储单位, 所有的东西都和数据页有关. 当我们想提高查询的性能时, 必须想方设法降低查询的页读取数量. 以后讲到索引时, 还会涉及到更多索引的结构. 如果你不知道什么是页, 你就无法寻找SQL Server的故障原因. 数据页的结构 SQL Server中的页有

清空SQL Server数据库中所有表数据的方法

其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,删除不了,因为可能有外键约束,一个常见的数据库结构是一个主表,一个子表,这种情况下一般都得先删除子表记录,再删除主表记录. 说道删除数据记录,

实现通过'net 映射sql server 读取局域网内其他服务器文件

实现环境 应用程序服务器:IIS6.0+windows Server2003 数据库服务器:Sql 2005+windows Server2003 研究原因 以前数据库服务器和web服务器在同一台服务器上,先在特殊原因把数据库服务器和Web服务器放在了不同的位置上,为了实现sql server数据库中数据快速导出,尝试了很多方法,但是当数据量太大以后,导出的速度就特别慢.最终在老大的帮助下,解决了这一问题,就是通过创建文件夹共享和盘符映射. 文件共享 开启guest账号:右击我的电脑\管理\用户

SQL Server 2008 R2 里迁移系统数据库的方法

针对不同的场景,采用不同的步骤. 对非master以及resource系统数据库而言,分两种情况. 1.非master以及resource系统数据库正常. 这里以迁移msdb为例,将msdb从D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\迁移到D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\目录下. 首先我们检查当前msdb的路径 ? 1 2 3 SELECT name, phys

我也谈谈 代码调用存储过程超时,SQL Server Management Studio里运行很快的问题

最近遇到了一个问题就是 一个执行速度很快的存储过程,在代码中调用的时候却超时了. 后来看到了两篇文章: 其中一篇是这样介绍的 今天同事用代码调用存储过程时超时,在SQL Server Management Studio里运行却很快就有结果,这和我上次遇到的情况一下,现在将解决方案记录如下,谨为大家作一提醒. 解决方案就是: 把存储过程中多余的空格删掉. 瞠目吧结舌吧,不过这就是现实,现实是残酷的,现实是无情的,哈哈 不一定是哪个空格就引起了超时,试着看吧  上面的解决方案是将存储过程里的空格去掉