MySql 迁移到 Gbase 8cV5 版本——详细指南

一、GBase资源获取

官网

注意:官网提供了丰富的文档技术交流社区,遇到问题可以查一下。

常用函数

南大通用GBase 8c迁移指南之MySQL篇

二、安装迁移工具DMT

(一)介绍

在这里插入图片描述

注意: 这个工具没有开源,官网上没有,需要联系GBase工作人员获取

在这里插入图片描述

(一)安装

参考手册进行安装。需要依赖docker环境,提前安装。

  1. 解压这个文件:(win环境也能用)
    在这里插入图片描述

  2. 解压后如下:
    在这里插入图片描述

  3. 终端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
  1. 测试是否启动

http://localhost:28081

在这里插入图片描述

三、迁移数据库

安装好GBase后,Navicat等可视化工具可以通过pgsql的方式连接数据库。
在这里插入图片描述

(一)创建适配MySql的GBase数据库(启用Dolphin 插件)

启动Dolphin 插件后,创建的数据库,GBase会兼容MySql大部分语法

在这里插入图片描述

具体使用参考用户手册里面的GBase 8c 插件参考手册

  1. GBase提供了兼容MySql语法的插件,需要在创建库时启用
    在这里插入图片描述

  2. 命令列界面输入下面的命令

    # 创建数据库并启用插件
    create database dbname with DBCOMPATIBILITY='B';
    # 激活库 ,p后面是GBase端口,u是用户名,gbase 表示管理员。默认就行
    gsql -d dbname -p 15400 -U gbase
    

    在这里插入图片描述

这样兼容MySql的数据库就创建好了

(二)迁移表

  1. 打开迁移工具:http://localhost:28081

在这里插入图片描述

  1. 创建目标库和源库连接
    在这里插入图片描述

  2. 创建迁移任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

迁移成功后如下:

在这里插入图片描述

到这里就数据库就迁移完成了。

四、MyBatis数据源配置切换

  datasource:
   	# currentSchema 这里指定模式名
    url: jdbc:postgresql://ip:5433/dbname_test?currentSchema=schemaName
    username: test
    password: 123
    driver-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) 

(四)GROUP BY 如果分组字段在其他地方用到了。需要在GROUP BY 后面加上这个字段。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值