在前两波中,已完成了Excel与Sqlserver的查询和上传功能,但难免许多临时的或更深入地操作数据库需要用Sql语句来操作,对一般用户电脑里,不可能有条件轻易安装一个数据库客户端软件,就算安装了对其中烦多的功能操作也不胜任。

开发一个简单的接受SQL语句对数据库进行访问操作就有点必要,当然这个落脚点放到Excel上是很不错的选择,毕竟所有用户电脑都有安装Excel。

并且在Excel上批量构造SQL语句也是容易的事,若有数据需要从数据库中导出,Excel作为装载小量数据并进行后续分析的容器是最佳选择,故今天给大家献上在Excel上向Sqlserver发送SQL命令并执行的功能。

使用场景

虽然操作数据库的任何操作都可以最终转换为写特定的SQL语句去操作,但不代表用SQL语句去操作是最佳的选择,就算专业的数据库开发维护人员,对一大坨的SQL代码也没几个能表示写得快而准无差错。

在Sqlserver数据库上,唯SQL语句更是要命的,微软自始以来就是以用户体验著称,让用户可以更低的成本操作数据库,微软自家出了SSMS数据库管理工具,许多的数据库的操作都可以落实为界面可视化操作如:新建数据库、数据表、视图,增删更改表字段类型等,都是界面化无比友好地操作,甚至可以自动生成所需的SQL语句简单小改一下即可达到想要的效果。

新建表操作

选择某个数据库对象,丰富的右键快捷操作

因此,对数据库开发管理者来说,在Excel上使用SQL语句访问数据库并不存在很大的方便性,以下是我个人想到的一些有必要在Excel里使用SQL语句访问数据库的场景。

执行存储过程或临时SQL查询返回数据表

在第19波中,已经演示过让用户在Excel上轻松地向Sqlserver发出查询,并且可使用Excel自有的自动筛选界面友好无痕地实现条件查询操作。

但此功能有部分场景未能涉及,如返回的表数据结构来源复杂,使用视图的方式进行大量嵌套、子查询性能有瓶颈,需要用到存储过程来实现(存储过程可以有许多中间步骤,生成临时表等操作,避免了直接查询带来的性能问题)。

同时某些数据返回不能直接用视图,需要用存储过程做一些复杂处理。此时有必要让Excel也可以使用存储过程查询所需数据。

在带参数的存储过程中,还需要教导用户理解参数怎么个输入和修改,让用户有能力实现类似条件查询的效果,不用一次性返回过多的数据源让Excel无法招架住。

执行存储过程或执行作业,手动调度运行数据ETL

当用户使用第20波手动导入了新的数据到Sqlserver上,可能某些用户需要的结果表数据,依赖于当前上传的表数据,而不以视图的方式来关联上传表数据,而是以存储过程的方式进行运算后再返回结果表,此时有必要让用户可以手动执行存储过程,生成新的结果表数据,再用第19波提及的方法,自助式地把所要的新的结果数据取回。

另一方面,如果新的结果表数据不是依赖用户上传的数据,而是依赖生产系统里的实时数据,如查看截止到当前的订单数据。

一般数据仓库里的数据非实时数据(实时生产性数据与分析所需的历史分离是较好的选择,减少对生产数据库的大批量数据查询时的负荷,从而保障生产数据库的稳定性)

一般的数据ETL操作只会在一天中某个时间进行(一般在凌晨业务系统不繁忙时),当前业务分析需要截止到现在的数据,此时需要手动执行ETL操作,一般调用一下Sqlserver的作业即可,此时若要把此需求返回给IT人员操作,沟通成本太大,IT人员也不乐意随时去配合这种临时性的任务。

此时若用户可以自行执行这些任务,就可以完美解决了,所以IT人员给用户一段SQL语句,然后授予其权限,用户只需简单单击按钮即可完成,就是Excel催化剂开发此功能的一大刚需场景。

临时性地执行部分SQL语句

此部分一般是给专业IT数据库人员使用,一般用户不建议使用临时性的SQL查询,而是应该把需求提取IT人员,让IT人员编写好相应的SQL,并固定为存储过程、视图等对象,再由用户自行去运行以上两点提及的场景所要的任务。说句心理话,用习惯SSMS,没有几个人喜欢用其他的Sqlserver客户端,更不要说如此简陋的只支持运行SQL语句的客户端。

详细操作步骤

  • 点击功能区的【SQL执行语句】,打开以下窗体。

    SQL语句执行窗口
  • 填写服务器名、数据库名、用户、密码等信息,若想找寻已使用过的连接信息,可点击【选择历史连接信息】,从跳出的对话框中双击某一行记录获取。

    双击获取连接信息
  • 在下方左侧输入所要执行的SQL语句
    若需要对大段SQL语句进行格式化,方便更好地识别理解SQL内容,可点击中部的【格式化SQL】,此时左右两边都会出现格式化后的SQL语句,其中右侧会有关键字的高亮显示。程序最终执行的是左侧的SQL语句,右侧仅供可视化阅读。

  • 若对当前的SQL语句在日后其他时候复用,可对其进行保存下来,供下次直接调用使用。点击【保存当前SQL语句】,填写名称和备注信息,方便下次检索时查看。

    保存当前SQL语句
  • 若需要复用已使用过的SQL语句,点击【选择历史SQL语句】,即可打开历史保存过的SQL语句清单。双击某一行任一单元格即可引用此行的SQL语句到主窗口中。

    历史SQL语句查询
  • 在执行SQL语句时,区分有无返回结构表对应不同的执行按钮操作
    若执行的SQL语句,没有返回结果表时,使用【SQL执行-无返回表数据】,若有表数据返回,根据需要是新建智能表存储还是覆盖现有智能表,而选择【SQL执行-返回表数据-新建智能表】还是【SQL执行-返回表数据-现有智能表】。

有数据表返回的操作,原理上是通过Excel原生功能的访问Sqlserver的工作薄连接中的修改其连接字符串和查询SQL代码。
使用此方式的好处是,当用户想从Sqlserver抓取新的数据,无需重复以上的操作,只需点击鼠标右键刷新一下即可。

Excel工作薄连接信息

下次更新数据时只需刷新即可

总结

操作数据库最终的方式是向数据库发出SQL查询,但因为普通用户无法轻松掌握SQL语言,此时有必要用一些用户能够掌握的方式去辅助完成。第19波中着重是查询数据库表、视图信息,第20波是把Excel表数据上传至数据库中,此两部分已大大减轻了数据库开发管理者的日常工作。

同时今天的第21波里,更是无限开放了使用SQL语句对数据库进行操作的功能,理论上已经可以完成任何数据库所需的操作,但鉴于大部分在Excel上使用SQL语句操作数据库的可操作性不强或有更好的替代方案,也详细进行原因说明,把最有必要的部分着重演示说明了。

经过Excel与Sqlserver交互三步曲,已经大大地提升了普通Excel用户的数据处理能力,也极大的减轻了数据库开发管理者对用户日常数据需求的开发难度,专注于业务逻辑和SQL语句编写,最终向用户推送数据结果将变得十分简易。

系列文章

一文带你全面认识Excel催化剂系列功能
安装过程详解及安装失败解决方法
第1波-工作表导航
第2波-数字格式设置
第3波-与PowerbiDesktop互通互联
第4波-一大波自定义函数高级应用,重新定义Excel函数的学习和使用方法
第5波-使用DAX查询从PowerbiDeskTop中获取数据源
第6波-导出PowerbiDesktop模型数据字典
第7波-智能选区功能
第8波-快速可视化数据
第9波-数据透视表自动设置
第10波-快速排列工作表图形对象
第11波-快速批量插入图片
第12波-快速生成、读取、导出条形码二维码
第13波-一键生成自由报表
第14波-一键生成零售购物篮分析
第15波-接入AI人工智能NLP自然语言处理
第16波-N多使用场景的多维表转一维表
第17波-批量文件改名、下载、文件夹创建等
第18波-在Excel上也能玩上词云图
第19波-Excel与Sqlserver零门槛交互-查询篇
第20波-Excel与Sqlserver零门槛交互-数据上传篇
第21波-Excel与Sqlserver零门槛交互-执行SQL
第22波-Excel文件类型、密码批量修改,补齐Power短板

关于Excel催化剂

Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!

Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!

Excel催化剂插件下载链接:https://pan.baidu.com/s/1gC6joqGY_SIg_yONga9PaQ
因插件使用VSTO开发技术完成,插件的安装需要电脑满足相关的环境配置才能运行,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物,进群的好处不用多说了)

取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。

最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!

关于Excel催化剂作者

姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。
技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。
历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。

擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。

2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。

和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。)

个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇的更多相关文章

  1. 个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等

    Excel里的批注,许多人很喜欢用,但批注真的值得我们大量使用吗?批注的使用场景在哪里?这些问题可能更值得花时间来思考下.同样因为不规范地使用批注,也带出了一大堆的后续擦屁股的事情来,从批注中找回有价 ...

  2. 个人永久性免费-Excel催化剂功能第35波-Excel版最全单位换算,从此不用到处百度找答案

    全球化的今天,相信我们经常可以有机会接触到外国的产品,同时我们也有许多产品出口到外国,国与国之间的度量单位不一,经常需要做一些转换运算,一般网页提供这样的转换,但没有什么比在Excel上计算来得更为方 ...

  3. 个人永久性免费-Excel催化剂功能第27波-Excel工作表设置快捷操作

    Excel催化剂在完善了数据分析场景的插件需求后,决定再补充一些日常绝大多数Excel用户同样可以使用到的小功能,欢迎小白入场,在不违背太多Excel最佳实践的前提下,Excel催化剂乐意为广大Exc ...

  4. 个人永久性免费-Excel催化剂功能第22波-Excel文件类型、密码批量修改,补齐PowerQuery短板

    Excel的多工作薄.多工作表批量合并功能,Excel用户很多这方面的使用场景,也促使了各大Excel各大插件们都在此功能上有所开发,体验程度不一,但总体能够满足大多数的应用场景,本人之前也开发个单独 ...

  5. 个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇

    Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去 ...

  6. 个人永久性免费-Excel催化剂功能第19波-Excel与Sqlserver零门槛交互-查询篇

    对频繁使用Excel的高级应用的尝试用户来说,绕不过的一个问题Excel的性能问题,对于几万条数据还说得过去,上了10万行的数据量,随便一个函数公式的运算都是一个不小的负荷,有些上进一点的用户会往Ac ...

  7. 个人永久性免费-Excel催化剂功能第105波-批量调整不规范的图形对象到单一单元格内存储

    在日常制表过程中,一个不得不面对的问题,许多的工作起点是基于其他人加工过的表格,无论自己多大的本领,面对不规范的其他人的制作的表格,经过自己的手,该擦的屁股还是要自己去亲手去擦,而带出来的也只会是一堆 ...

  8. 个人永久性免费-Excel催化剂功能第104波-批量选择多种类型的图形对象

    在Excel的日常操作过程中,选择绝对是一个高频的操作,之前开发过一些快速选择单元格区域的辅助功能,除了单元格区域,Excel强大之处在于,类似PhotoShop那般可以存放多种图形,并且有图层先后顺 ...

  9. 个人永久性免费-Excel催化剂功能第102波-批量上传本地图片至网络图床(外网可访问)

    自我突破,在100+功能后,再做有质量的功能,非常不易,相对录制视频这些轻松活,还是按捺不住去写代码,此功能虽小,但功课也做了不少,希望对真正有需要的群体带来一些惊喜. 背景介绍 图床的使用,一般是写 ...

随机推荐

  1. 在Azure中搭建Ghost博客并绑定自定义域名和HTTPS

    绪论 之前一直使用cnblog写博客,现在将博客迁移至Microsoft Azure上的Ghost博客上,Ghost博客使用Markdown书写博客,页面简洁,是我喜欢的风格.具体参见官网:https ...

  2. 使用Boost的DLL库管理动态链接库

    Boost 1.61新增了一个DLL库,跟Qt中的QLibrary类似,提供了跨平台的动态库链接库加载.调用等功能.http://www.boost.org/users/history/version ...

  3. 条款09:绝不在构造和析构过程中调用virtual函数

    不该在构造函数和析构函数期间调用virtual函数,这一点是C++与jave/C#不同的地方之一. 假设有一个class继承体系,用来模拟股市交易如买进.卖出的订单等等.这样的交易一定要经过审计,所以 ...

  4. Webapi实现websocket实时通讯

    应用场景:前端页面发起一个websocket请求与后端进行实时通讯.后端监听某端口获取数据,将监听到的数据加工处理,通过websocket发送到前端. 这里只提供后台的处理方案仅供参考. 1.后端监听 ...

  5. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上

    前言 大家好,我最近在想如何提交代码的时候自动的打包 NuGet 然后发布到 AzureDevOps 中的 Artifacts,在这个过程中踩了很多坑,也走了很多弯路,所以这次篇文章就是将我探索的结果 ...

  6. 不一样的go语言-玩转语法之二

      本文继续玩转语法,是为之二.   I/O(Input/Output),输入输出是计算机最为突出的特点,也可以说是计算机最为核心的功能.没有I/O,计算机就是一堆废铜废铁.从最低层的电子元器件开始, ...

  7. 16 input默认样式清除

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  8. SpringBoot从入门到精通一(idea优雅搭建SpringBoot项目)

    前言 在没有SpringBoot之前,我们搭建的是SSM(SpingMVC+Spring+Mybatis)项目,在搭建SSM项目的时候,我们要经过一系列的繁琐配置,例如:application,web ...

  9. 关于AI本质的思考

    前言 最近几天和一位朋友探讨了一下现阶段的人工智能以及未来发展,并且仔细重读了尤瓦尔赫拉利的“简史三部曲”,产生了一些关于AI的新想法,觉得有必要整理出来. 程序.AI的本质 现代的计算机都是基于图灵 ...

  10. 微信小程序ES6方法Promise封装接口

    为何要封装接口? 有小程序开发的经验者,相信对微信API Request很熟悉了.对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据.诚然,直接使用api发起请求对接 ...