在系统重构中,需要把Mysql的表结构转成pgsql,明显的是,这两个数据库的函数、标识符等都不一样,
这里记录下如何快速将Mysql建表语句转成pgsql语句
工具Navicat Premium(可支持多种数据库连接的数据库客户端)
这里附上Navicate Premium的安装链接
navicate网盘链接
点击上面链接,即可进入分享目录、下载,正确安装后,可使用数据库工具
安装完成后,连接原Mysql库,这里以我本地mysql-nacos为例,详细操作如下图示
工作的时候遇到这么个问题,就是在我自主研发的TongYao2.0框架上,需要用到pgsql数据库,本身TongYao2.0框架针对
mysql
数据开发的,所以需要
转
换一下数据库。
转
换用到的 navicat 15版本点击下面tools – datatransfer
选择开始数据库到目标数据库
点击底下 options 按钮可以选择对目标库的一些配置
选择全部
表
结构
点击start开始即可
正在导入日志输出
到此就完成了。...
1.首先加一下依赖
<dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>1.2</version> </dependency>
2.加下脚本
.replaceAll("`", “”")
//.replaceAll(“bigint (19)”,“int8”)
.replaceAll(“BIGINT UNIQUE NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“BIGINT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“BIGINT
使用
mysql
dump dump出PG兼容的
MySQL
建
表语
句(修改下面语句中的databasename和dumpfile.sql),此处dump语句很重要,一定要
转
为PG兼容的
建
表语
句:
mysql
dump --opt --compatible=
postgresql
--default-character-set=utf8 -d databasename -r dumpfile.s...
CREATE TABLE `students` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT(11) NOT NULL,
`gender` ENUM('male','female') NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
转
换成
PostgreSQL
建
表语
法:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender VARCHAR(10) NOT NULL CHECK (gender IN ('male', 'female')),
created_at TIMESTAMP NOT NULL DEFAULT now()
需要注意的是,
PostgreSQL
没有 ENUM 类型,可以使用 VARCHAR 类型代替,并使用 CHECK 约束来限制值的范围。另外,
PostgreSQL
中 SERIAL 类型可以自动递增,类似于
MySQL
中的 AUTO_INCREMENT。