因为项目原因,需要把原来MySQL数据库上的数据全部迁移到PostgreSQL。两者都是很优秀的开源数据库,但在国内,MySQL要比PostgreSQL普及,看资料PostgreSQL在处理高并发和数据类型支持上要好于MySQL,这也是我们项目进行数据库迁移的主要原因。
在迁移过程中,我主要遇到了一下几个问题:
1 部分数据类别不通用
在项目中遇到了主要以下几种数据类别需要转换(前面为MySQL数据类别,后面为PostgreSQL,数据类别括号中的n表示具体数字):
bigint(n)->bigint;
double->double precision或者float8;
datetime->timestamp;
项目中用到的差不多就这些,其余的用到再查。
2.命名规则和大小写
在MySQL中,有关数据库,表名和字段的命名,会采用“··”符号(即键盘上Esc键下面的印有~符号的键)而这在PostgreSQL中是不允许的,PostgreSQL中要么使用双引号包起来,要么直接不加任何标记。
MySQL创建表sys_user:
CREATE TABLE `sys_user` (
`USER_ID` varchar(100) NOT NULL,
`USERNAME` varchar(255) DEFAULT NULL,
`PASSWORD` varchar(255) DEFAULT NULL,
`NAME` varchar(255) DEFAULT NULL,
`RIGHTS` varchar(255) DEFAULT NULL,
`ROLE_ID` varchar(100) DEFAULT NULL,
`LAST_LOGIN` varchar(255) DEFAULT NULL,
`IP` varchar(100) DEFAULT NULL,
`EMAIL` varchar(32) DEFAULT NULL,
`NUMBER` varchar(100) DE