目录标题
- 一、GBase资源获取
- 二、安装迁移工具DMT
- (一)介绍
- (一)安装
- 三、迁移数据库
- (一)创建适配MySql的GBase数据库(启用Dolphin 插件)
- (二)迁移表
- 四、MyBatis数据源配置切换
- 五、不兼容的语法(持续补充)
- (一)字段别名需要显式的使用as指定别名
- (二)字符串不能用双引号 " "修饰,需要用单引号' '
- (三)季度类型:QUARTER 没有这种类型使用会报错
- (四)GROUP BY 如果分组字段在其他地方用到了。需要在GROUP BY 后面加上这个字段。
一、GBase资源获取
官网
注意:官网提供了丰富的文档和技术交流社区,遇到问题可以查一下。
常用函数
南大通用GBase 8c迁移指南之MySQL篇
二、安装迁移工具DMT
(一)介绍
注意: 这个工具没有开源,官网上没有,需要联系GBase工作人员获取
。
(一)安装
参考手册进行安装。需要依赖docker环境,提前安装。
-
解压这个文件:(win环境也能用)
-
解压后如下:
-
终端cd到解压目录:
cd GBase_DMT3.0.0B37_x86_64/
# 加载本地镜像
docker load -i dmt-image.tar
# cd 到pgsql,先启动pgsql
cd postgresql
# 启动 Docker 容器,这个配置文件默认就好,里面配置了数据卷、端口映射和一些容器内部网络通讯的networks。
docker-compose up -d
# 返回上一层,启动DMT服务
cd ..
# 启动服务。默认配置就好
docker-compose up -d
- 测试是否启动
http://localhost:28081
三、迁移数据库
安装好GBase后,Navicat等可视化工具可以通过pgsql的方式连接数据库。
(一)创建适配MySql的GBase数据库(启用Dolphin 插件)
启动Dolphin 插件后,创建的数据库,GBase会兼容MySql大部分语法
。
具体使用参考用户手册里面的GBase 8c 插件参考手册
-
GBase提供了兼容MySql语法的插件,需要在创建库时启用
。
-
命令列界面输入下面的命令
# 创建数据库并启用插件 create database dbname with DBCOMPATIBILITY='B'; # 激活库 ,p后面是GBase端口,u是用户名,gbase 表示管理员。默认就行 gsql -d dbname -p 15400 -U gbase
这样兼容MySql的数据库就创建好了
。
(二)迁移表
- 打开迁移工具:http://localhost:28081
-
创建目标库和源库连接
-
创建迁移任务
迁移成功后如下:
到这里就数据库就迁移完成了。
四、MyBatis数据源配置切换
datasource:# currentSchema 这里指定模式名url: jdbc:postgresql://ip:5433/dbname_test?currentSchema=schemaNameusername: testpassword: 123driver-class-name: org.postgresql.Driver # 3.2.0开始支持SPI可省略此配置
五、不兼容的语法(持续补充)
启用Dolphin
插件后,大部分MySql的语法、函数都是兼容的。下面是我发现的部分不兼容的语法。
注意: 不同版本,可能不同。这里是GBase 8c V5_5.0.0
(一)字段别名需要显式的使用as指定别名
这个不用也可以,但是我记得之前是不行的
。。。
如果需要指定别名不能缺省 as ,表名可以。
正确用法:
SELECT
d.id,
sum(now_count) as now_count,
sum(last_count) as last_count,
FROM test d
错误用法:
SELECT
d.id,
sum(now_count) now_count,
sum(last_count) last_count,
FROM test d
(二)字符串不能用双引号 " "修饰,需要用单引号’ ’
正确用法:
SELECT
d.id,
sum(now_count) as now_count,
sum(last_count) as last_count,
FROM test d
where d.name='lihua'
错误用法:
SELECT
d.id,
sum(now_count) as now_count,
sum(last_count) as last_count,
FROM test d
where d.name="lihua"
(三)季度类型:QUARTER 没有这种类型使用会报错
比如这个函数用到了unit,DATE_SUB(date/datetime/time, interval expr unit) 函数 unit 没有季度类型(QUARTER)
我试了这个版本的GBase的大部分函数,用到这个季度类型都会报错。一个季度等于3个月,所以可以用月替换:
# 比如这个函数:
DATE_SUB('2024-08-19', interval 1 QUARTER)
# 改为:
DATE_SUB('2024-08-19', interval 3 MONTH)