将MySQL数据库数据转换为PGSQL数据库

近期实践了一下如何将MySQL的数据转换到PGSQL中

使用navicat15及以上版本的数据传输功能

首先选择工具中的数据传输功能
在这里插入图片描述
传输之前要在pgsql中建立一个接受数据的数据库,为了方便选择同名数据库
在这里插入图片描述
然后选择要传输的数据库
在这里插入图片描述
选择要传输的数据
在这里插入图片描述
因为MySQL转PGSQL是会由于语法不通出错,所以可以在选项中选择错误时继续
在这里插入图片描述
随后点击开始即可
在这里插入图片描述

记得记录下出错的表和错误内容
在这里插入图片描述
随后就可以看到表格已经添加到PGSQL中了
在这里插入图片描述

转移时遇到的问题

我遇到的大致可以分为三类错误

  1. 数值类型错误
  2. 设置索引错误
  3. 设置外键错误

数值类型错误

因为转换后PGSQL默认id是int4类型,而MySQL自带的information_schema数据库中有许多的id数据超出了int4的上限,改为int8或numeric可以解决问题

设置索引错误

MySQL中不同表之间可以有同名索引,但是PGSQL是同一数据库共用一个索引库,所以要避免索引名字重复

设置外键错误

MySQL是支持复合主键的其中一个作为外键的,虽然MySQL不推荐,但它确实是支持的。但PGSQL不支持这种做法,当你的MySQL使用了复合主键是要注意。
再不更改数据库现有结构下,可以添加想要作为外键的字段的唯一键,在添加唯一键后,便可以设置外键了

附一个比较清晰的复合主键与联合主键的讲解:
https://www.cnblogs.com/CNty/p/10941398.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐