个人习惯用MySQL workbench EER数据建模,然后生成SQL语句到数据库中执行,这样表之间的关系比较直观。
像下面这样:
画图
正向工程,生成DDL语句:
忽略生成外键,以及外键索引啥的:
生成的DDL语句:
到数据库执行。
踩坑了
最近团队微调,我被调整到另一个小团队。前两天接了个新需求,于是我依然使用MySQL workbench EER建模,结果好不容易建模完成了,却被告知这个项目用的数据库是PostgreSQL!
于是就面临如下几种选择:
重新找个支持导出PostgreSQL DDL语句的建模软件,再弄一遍。据我所知,macOS平台里没啥好的数据建模软件…PowerDesigner用不了(除非装虚拟机,或者Wine);
Navicat太难用了(居然有人说Navicat是最好的数据库客户端,我只能给一个大写的服,在我看来,这货连IDEA自带数据库管理都比不上……这观点可能有点偏激,但现状是我做个查询,Navicat把查询按钮藏得很深);
IDEA宣布会开发类似功能,但一直没有动静;
开源的PDMan,体验挺不错,但也得连个数据库控制版本。
依然用MySQL workbench导出DDL,然后自己将MySQL DDL转换成PostgreSQL DDL。
我选择了自己转换SQL语句。
开源的DDL转换工具
既然要转换SQL语句,我心想,业界肯定有相关的工具啊。于是上万能的GayHub搜了下,还真有,列出来:
然而试用后,内心是崩溃的……生成出来的DDL要么有误,要么没有注释。
自己开发工具
考虑到我的诉求其实非常简单,只是个DDL语句转换而已,自己开发一个也不难。而且之前研读Mybatis通用Mapper源码时,知道Java世界里有个jsqlparser 的工具。
花了10分钟简单了解了下jsqlparser 后,就开撸开发工具了……花了20分钟,初版写完了,然后和该项目的同事又花了20分钟验证了下,最终确定了如下的版本。代码贴出来:
加依赖:
1
2
3
4
5
com.github.jsqlparser
jsqlparser
1.2
写代码:
1
2
3<