这一段时间在帮客户写一个小型的CRUD项目,原项目是MySQL数据库,客户有一个要求就是必须使用PostgreSQL数据库,本来以为转换非常方便,没想到还是折腾了一下。预先提醒一下,我只完成了数据库表结构、数据的转换,其他的外键、视图没有涉及。
首先MySQL与PostgreSQL的语法还是有些差别,无法无缝转换使用。于是在网上找到了一个收费工具,MySQL to PostgreSQL,demo版本,有如下限制:
1、数据记录,不超过50条
2、不能转换外键及视图
第二条限制还好办,我使用的MySQL数据库本来就没有建外键和视图,第一条就不好办了,因为部分表的数据还是超过了50条的。
于是又查询一翻,可以使用Navicat Premium 15的数据传输功能,先将MySQL转换成PostgreSQL,有些同学可能会说,那直接用这个工具不完了,但是经过测试,有些重大问题。PostgreSQL的主键自增ID字段,是跟MySQL不太一样的,转换的时候转换不过来,另外一些字段转换过来类型不对,比如说bit、bigint等类型转到PostgreSQL就不对了,所以不能直接用他来生成建表语句,但是可以使用他生成Insert数据插入语句。
点击“工具”-->“数据传输”。根据设置一步步来,如下图所示:
等转换成PostgreSQL后,就可以在数据库上右键单击,“转储SQL文件”-->“结构和数据”,这样就生成了全库sql语句文件,包含了Insert语句
最后使用MySQL to PostgreSQL工具,来生成数据库表结构,配合你刚才导出的可用的Insert语句,进行组合,就完整的完成了一次从MySQL到PostgreSQL连表结构到数据的完整转换,希望对各位能有帮助!