一、导入本地的excel数据到本地数据库,流程如下:
1、--启动OpenDataSource
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
RECONFIGURE
2、--查询excel的数据
SELECT * FROM OpenDataSource
( 'Microsoft.ACE.OLEDB.12.0','Data Source="C:\Users\Think\Desktop\粗细联格式.xlsx";Extended properties=Excel 12.0')...[Sheet1$]
3、--将excel表数据插入数据库表中
INSERT INTO 粗细联.接口参数属性
( 接口参数名 ,
参数属性
)
SELECT 接口参数名 ,
参数属性
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source="C:\Users\Think\Desktop\粗细联格式.xlsx";Extended properties=Excel 12.0')...[Sheet1$];
过程中可能会遇到的问题:尚未注册 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0"
有的语句里是Microsoft.Jet.OLEDB.4.0,其中,jet引擎和ACE引擎是面向不同版本的office的,
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。
解决方法如下:
下载安装:Microsoft Office Access Database Engine
附链接:https://www.microsoft.com/en-us/download/details.aspx?id=13255
(个人理解出现该问题的原因是数据库版本和office版本不对应导致,例如office是32位的,而SQLSERVER是64位的。)
二、导入本地的excel数据到远程数据库
流程如下:(需要建立链接服务器, 以下是在我本地建的链接服务器往远程服务器上插数据)
1、要确保在本地的数据库中可以查询本地excel的数据,查询语句如下,具体流程见上文
SELECT * FROM OpenDataSource
( 'Microsoft.ACE.OLEDB.12.0','Data Source="C:\Users\Think\Desktop\粗细联格式.xlsx";Extended properties=Excel 12.0')...[Sheet1$]
2、--建立链接服务器
exec sp_addlinkedserver 'ITLY', '', 'SQLOLEDB ', '7.173.144.###' --服务器名称
exec sp_addlinkedsrvlogin 'ITLY', 'false ',null, 'sa', '###########' --数据库登录名和密码
3、--将excel表数据插入数据库表中
INSERT INTO ITLY.数据库名称.粗细联.接口参数属性 --有下划线的是表名
( 接口参数名 ,
参数属性
)
SELECT 接口参数名 ,
参数属性
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source="C:\Users\Think\Desktop\粗细联格式.xlsx";Extended properties=Excel 12.0')...[Sheet1$];