T-SQL——关于SQL打开Excel文件
0. 背景说明
- 某系统上线,需要大量的数据初始化,用户提供的而是Excel文件。
期望直接插入到SQL Server数据库的表中,所以可以按照以下步骤使用MSSM读取Excel表格中数据,实现Excel到SQL Server的数据批量导入
1. 安装Access Database Engine
首先安装Access Database Engine 即需要安装Micsoft.ACE.OLEDB安装包
- 微软官方下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
- 注意安装的SQLServer若是64位则该引擎一定也要64位的,若是安装32位则报错无法使用
因为我本机已经安装了Office2007(32位)
在该种情形下,安装64位的Micsoft.ACE.OLEDB则会报错:
装64(32)为office Access驱动的时候无法安装64(32)位版本的Office因为在您的PC上找到了以下32(64)位程序
而此时我并不想卸载我的32位Office,或者服务器不允许我卸载32位的程序
上述情形可以使用以下安装包安装对应位数的版本即可
百度云链接: 2351144/2018rupg/未在本地计算机上注册“microsoft.ACE.oledb.12
1. SQL脚本
说明:Excel表格是第一行默认是读取结果集的列名
--开启启用 Ad Hoc Distributed Queries 高级选项,
--在SQL Server中,该选项默认是Disable的,需要显式启用(Enable);
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
--允许在进程中使用ACE.OLEDB.12
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;
--连接Excel表格的两种方式
--注意使用OpenDataSouce函数,后使用三个点后连接需要获取的工作簿名称
SELECT *
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=E:\1.xlsx')...[Sheet1$];
--注意OPENROWSET第二个参数是Excel中的工作簿名称
SELECT *
FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\1.xlsx;hdr=yes;imex=1', Sheet1$);
--关闭第一开启的配置
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 0;
RECONFIGURE;
GO
3. .net项目中通过Micsoft.ACE.oledb读取Excel文件
T-SQL——关于SQL打开Excel文件的更多相关文章
- SQL Server 无法打开物理文件的 2 种解决办法
解决方法: 方法1.无法打开可以能是没有权限.如果是这样以管理员身份运行Managerment Studio就可以了. 方法2.找到指定的数据库文件.右键属性-->安全-->勾上 ‘完全 ...
- 麦咖啡阻挡正常打开Excel文件
双击打开Excel文件,提示如下图: Excel文件被麦咖啡做阻挡,无法正常打开 处理方案: 过一会儿还是出现此问题,干脆就把缓冲区保护给禁用掉
- C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要 ...
- VB中后台打开Excel文件实现代码
某些时候需要打开Excel文件来获取或者写入数据,但又不希望跳出打开的Excel文件窗口,可以用下面的代码: Dim eb As New excel.Application, wb as excel. ...
- 如何在单独的窗口中打开 Excel 文件
如何在单独的窗口中打开 Excel 文件 文章编号:087583 2012/11/1 18:45:29 故障现象: 如何在单独的窗口中打开 Excel 文件? 解决方案: 比较安全的方法就是直 ...
- Sql server2008如何导入Excel文件数据?
sql server 中如何使用Excel文件导入数据?我做个测试,首先建立一个测试表(民族表) --创建一个民族表-- create table BdsNation( Uid int not nul ...
- SQL Server无法打开物理文件,操作系统错误 5:"5(拒绝访问。)的解决办法
在新装的系统中使用SQL Server附加以前的数据库的时候可能会遇到“无法打开物理文件,拒绝访问”的错误,如下图: 解决方法为使用windows验证登录,或者更改SQL Server内置账户类型为L ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- Sql数据保存到Excel文件中
public string ExportExcel( DataSet ds,string saveFileName) { try { if (ds == null) return "数据库为 ...
随机推荐
- C#异步编程2
- Spring详解(八)------常用的连接池配置
首先,我们准备Jdbc属性文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...
- docker 安装Hive
转自:https://www.cnblogs.com/upupfeng/p/13452385.html#%E9%83%A8%E7%BD%B2hive 使用docker快速搭建hive环境 记录一下 ...
- eclipse性能调优的一次记录
最近因为学习原因,eclipse中插件越来越多,造成eclipse一次次假死,着实很影响工作效率和心情,有时正是兴起,但是造成短片很令人生气,如果eclipse卡顿或者假死,在电脑配置较不错的情况下, ...
- C# - 习题02_写出程序的输出结果a.Fun()
时间:2017-08-23 整理:byzqy 题目:写出程序的输出结果: 文件:Program.cs 1 using System; 2 3 namespace Interview1 4 { 5 pu ...
- roscore启动不完全问题
运行roscore,得到如下日志,且一直卡着无法继续执行 ... logging to /home/xbit/.ros/log/79f2952c-589c-11ea-8213-d0abd5e7d222 ...
- 3k+2形式的素数相关的两个命题的证明
- 并发编程之:AQS源码解析
大家好,我是小黑,一个在互联网苟且偷生的农民工. 在Java并发编程中,经常会用到锁,除了Synchronized这个JDK关键字以外,还有Lock接口下面的各种锁实现,如重入锁ReentrantLo ...
- K8S命令行工具——kubectl
1.kubectl概述 2.kubectl命令的语法 例子: 3.kubectl子命令使用分类 (1)基础命令 (2)部署和集群管理命令 (3)故障和调试命令 (4)其他命令 4.kubectl命令例 ...
- Pytest系列(15)- 多重校验插件之pytest-assume的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest中可以用pyth ...