这样的功能非常常见,而且比较实用。
可以满足批量的数据上传的功能需求,但有的情况下,需要面对一些小众的数据处理要求,例如业务部门偶尔需要将EXCEL中的数据,导入到系统中,并且根据这部分数据,进行一些定制化的处理。
这种情况下,为这些不经常使用的功能,开发程序功能,非常的不划算。
而且EXCEL模板的随意化,也不可能一一打造上传功能,所以如果能够使用SQL直接处理这些EXCEL文件,无疑是非常划算的选择。
既可以从容应对需求,又可以划水、摸鱼。
这样的操作不香吗?接下来以SQLSERVER为例,看看如何使用SQL直接读取EXCEL中的数据。
操作前需要注意一些事项,那就是WPS版本的目前没有尝试过,大概率是不可用的。
毕竟EXCEL属于微软系全家桶产品系列,肯定兼容性要更好一些 。
首先数据库默认的该部分权限是关闭的,涉及到系统的安全设置,在进行导入前,我们需要将系统配置存储过程中对应的选项设置打开。
设置为可用状态,默认为0,为不可用状态。
需要将这个状态标识符,从0修改成1,那么即可完成第一步的操作。
exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigure
接下来我们弄一个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',0reconfigureexec sp_configure 'show advanced options',0reconfigure
总结一下:在项目开发领域,问题的解决方案,从来都不是唯一的选择。这就是软件开发的魅力所在。
如何根据场景,进行方案的最优质选择,这才是作为项目开发人员,需要关注的重点所在。
喜欢的小伙伴可以关注我,一起交流学习。
我是IT鸟叔,一位喜欢写程序、钓鱼、喝茶、玩游戏的中年大叔。
0 评论