在项目开发过程中,经常会出现将EXCEL中的数据,导入到数据库表中的需求!这样的功能非常常见,而且比较实用!
可以满足批量的数据上传的功能需求,但有的情况下,需要面对一些小众的数据处理要求,例如业务部门偶尔需要将EXCEL中的数据,导入到系统中,并且根据这部分数据,进行一些定制化的处理!
这种情况下,为这些不经常使用的功能,开发程序功能,非常的不划算!而且EXCEL模板的随意化,也不可能一一打造上传功能,所以如果能够使用SQL直接处理这些EXCEL文件,无疑是非常划算的选择!
既可以从容应对需求,又可以划水、摸鱼!这样的操作不香吗?接下来以SQLSERVER为例,看看如何使用SQL直接读取EXCEL中的数据!
操作前需要注意一些事项,那就是WPS版本的目前没有尝试过,大概率是不可用的!毕竟EXCEL属于微软系全家桶产品系列,肯定兼容性要更好一些 !
首先数据库默认的该部分权限是关闭的,涉及到系统的安全设置,在进行导入前,我们需要将系统配置存储过程中对应的选项设置打开!设置为可用状态,默认为0,为不可用状态!
需要将这个状态标识符,从0修改成1,那么即可完成第一步的操作!
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
接下来我们弄一个EXCEL用于测试,草草的填充数据之后,放到C盘目录即可!
准备工作已经就绪,接下来我们直接使用SQL读取指定目录下的EXCEL文件即可了!
SELECT * FROM
OPENROWSET
( 'MICROSOFT.JET.OLEDB.4.0',
'Excel 8.0;IMEX=1;HDR=YES;DATABASE=C:/Demo.xls',
[sheet1$]
)
这里的MICROSOFT.JET.OLEDB.4.0′,’Excel 8.0;IMEX=1;HDR=YES;DATABASE=C:/Demo.xls参数是连接字符串的配置,包含了EXCEL的驱动版本,读取规则设置,以及文件的路径与名字,后面的sheet1为EXCEL中页签的名字!
这样数据就轻而易举的从EXCEL文件中读取出来的,然后的操作,就进入到小伙伴们擅长的领域了!可以开启收割模式了!
读取结束后,需要将安全模式重新关闭,毕竟数据库乃重中之地,需要严苛地进行安全性防范!
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
总结一下:
在项目开发领域,问题的解决方案,从来都不是唯一的选择!这就是软件开发的魅力所在!如何根据场景,进行方案的最优质选择,这才是作为项目开发人员,需要关注的重点所在!