在前两波中,已完成了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语句编写,最终向用户推送数据结果将变得十分简易。
|