MySQL 建表语句转 PostgreSQL 建表语句全纪录

栏目: 数据库 · PostgreSQL · 发布时间: 5年前

内容简介:个人习惯用MySQL workbench EER数据建模,然后生成SQL语句到数据库中执行,这样表之间的关系比较直观。像下面这样:

MySQL 建表语句转 PostgreSQL 建表语句全纪录

个人习惯用MySQL workbench EER数据建模,然后生成 SQL 语句到数据库中执行,这样表之间的关系比较直观。

像下面这样:

  • 画图

    MySQL 建表语句转 PostgreSQL 建表语句全纪录

  • 正向工程,生成DDL语句:

    MySQL 建表语句转 PostgreSQL 建表语句全纪录

  • 忽略生成外键,以及外键索引啥的:

    MySQL 建表语句转 PostgreSQL 建表语句全纪录

  • 生成的DDL语句:

    MySQL 建表语句转 PostgreSQL 建表语句全纪录

  • 到数据库执行。

踩坑了

最近团队微调,我被调整到另一个小团队。前两天接了个新需求,于是我依然使用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搜了下,还真有,列出来:

  • mysql-to-postgres:https://github.com/maxlapshin/mysql2postgres

  • mysql-postgresql-converter:https://github.com/lanyrd/mysql-postgresql-converter

  • 多款工具配合使用:https://yq.aliyun.com/articles/241 (不得不佩服这兄弟真有耐心啊!)

然而试用后,内心是崩溃的……生成出来的DDL要么有误,要么没有注释。

自己开发工具

考虑到我的诉求其实非常简单,只是个DDL语句转换而已,自己开发一个也不难。而且之前研读Mybatis通用Mapper源码时,知道 Java 世界里有个 jsqlparser 的工具。

花了10分钟简单了解了下 jsqlparser 后,就开撸开发工具了……花了20分钟,初版写完了,然后和该项目的同事又花了20分钟验证了下,最终确定了如下的版本。代码贴出来:

加依赖:

写代码:

如代码所示,目前是借助 jsqlparser 的SQL解析能力配合字符串替换的方式生成PostgreSQL的。

效果演示

转换前的DDL:

转换后的DDL:

效果还是不错的,基本达到了我的要求。

不足

目前工具代码比较屎,如果想要改进,应该是要让工具理解MySQL DDL的词法,然后构建成例如Table、Column、Comment、Constraint、Index等对象例如:

然后抽象一个方言枚举,并为不同的方言制作一个DDL Generator Handler,然后根据不同的方言生成不同数据库平台的DDL语句。

为什么不改进?因为没有时间,工具是为工作服务的,目前能达到我的目的,就没动力修改了,未来有需求再改进吧。


以上所述就是小编给大家介绍的《MySQL 建表语句转 PostgreSQL 建表语句全纪录》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编译原理

编译原理

Alfred V.Aho、Jeffrey D.Ullman、Ravi Sethi / 李建中 / 机械工业出版社 / 2003-8 / 55.00元

《编译原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。《编译原理》一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理......一起来看看 《编译原理》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器