什么工具能自动生成SQL 这么牛

哈喽,大家好。

程序猿和产品的爱恨情仇:谁也离不开谁,谁也看对方不顺眼。一个是下单的,另一个是做饭的,下单的嫌弃做饭的做的慢、不好吃还不按要求做,做饭的嫌弃下单的钱少事多要求高。┓( ´∀` )┏

小北最近也是被一个需求恶心到,又不能改又不能砍,写起来怎么都不爽,苦于实现繁琐,于是又去找工具帮忙,这不巧了,刚好有个类似的,小北在不涉及公司信息的情况下,就用作者的例子介绍下这个好用的结构化SQL语句生成器吧。

介绍

本以为这种 ‘必须要用一句 SQL’ 来实现 的奇葩定制化需求,不可能有轮子,但是看到这个用js编写的开源项目, 有着2.9K star 心里好受了些,毕竟有近3000个怨种和我一样被产品折磨,哈哈哈。

需求受限于业务,由于业务非常复杂,且数据量极大,所以有了这个需要上千行SQL才能解决的业务。

那这个项目有啥用呢

  • 可以将重复的sql 以变量替换的形式处理,这样你的重复sql就能只写一次,改动的话也只用改一次就好了,

  • 让写sql 变得和写文章大纲一样,边写边读,让长sql变得结构化,逻辑更清晰明了,

  • 可以展示 SQL 语句的引用树和替换过程,对于分析理解 SQL更加便捷。

先看下图感受下抽象简化后的sql 生成了都有近千行,什么你说没缩进,就算缩进了 也得上百行代码,何况里面的某个 实际需求要麻烦太多了,有些字段公式就好几行才写得完。

如何使用

  • 就工具而言作者贴心的用vue+ts 做了个在线结构化JSON生成SQL的网站,只要按规则将你的业务字段依次写在左边,右边就会生成对应的SQL语句

  • 还不懂 那我们再换一个例子

  • 优点

小北有话说

虽然需求很定制化,其中有很多重复工作,但是作者在各种特定的限制下,抽象化了一个可以解决问题,很好用的轮子,很巧妙的解放了人工,当然你也可以把它当做一个 重复代码生成器来使用 ,希望对你有一点点启发,如果有帮到你,那点个赞再走啊~

开源指北,立志做最好的开源分享平台,分享有趣实用的开源项目。 欢迎加入交流群,你可以摸鱼、划水、吐槽、咨询。还有简历模板、各种技术面试资料等100G的资源等着你领取哦。 公众号回复888马上加入,加入即送程序员进阶精品电子书一套,快来一起来聊一聊吧!

关注开源指北公众号,获取更多资源。

以上就是本次推荐的全部内容,感谢各位的观看。

github地址:https://github.com/liyupi/sql-generator

一、简介 1.1前言 1、由于最近工作一直用Oracle,故对Oracle数据库研究为对象。 2、根据工作业务需求实际情况进行功能研发。为什么要开发呢?因为在数据库升级或者迁移的时候,为了保证不同环境不同数据库数据保持同步,故数据库SQL脚本非常作用。比如:数据库主脚本,副脚本,增量脚本。 3、 什么是主脚本、副脚本、增量脚本呢? 3.1、主脚本指数据库表或存储过程,视图脚本,序列等脚本。 3.2、副脚本指必须执行主脚本之后才执行的脚本。换句话说在没执行主键脚本的情况下,副脚本执行之后会回滚事务失败。 3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则需要的SQL脚本。 2、减少人工编写SQL脚本出错率问题,完全通过程序检测SQL准确性。 3、帮助开发人员提高SQL编写效率,减少人工编写SQL开发成本问题。 4、帮助开发人员节约时间,同时避免繁琐不必要编写SQL的工作。 二、实现方式与原理 2.1实现方式 1、实现方式分:正向与逆向实现。什么是正向与逆行呢【是否有鸡还是有蛋,先后道理同等】 2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 3、逆向方式:首先有数据库表,然后通过ORM持久化技术连接数据库再读取表的字段等属性出来,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 2.2原理 对数据库软件内置核心表或视图查询出来存储用户行为表结构所有属性信息,对此属性结构信息进行分析与组装所需要SQL脚本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wis57

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值