注册
【与达梦同行】MySQL迁移达梦数据库文档 (Springboot + MybatisPlus + PageHelper)
技术分享/ 文章详情 /

【与达梦同行】MySQL迁移达梦数据库文档 (Springboot + MybatisPlus + PageHelper)

AKATSUKI 2023/01/02 3931 9 2

系统:windows 10
安装教程:https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html
数据守备搭建教程:https://eco.dameng.com/document/dm/zh-cn/pm/data-guard-construction.html

数据初始化:
完成安装后,完成数据库初始化,其中不勾选字符串比较大小写,勾选VARCHAR类型以字符为单位。

image.png

数据迁移:

  1. 点击打开“DM管理工具”;在用户菜单中,新建一个用户TEST(一个模式相当于一个MySQL的库,一个用户对应一个模式),新建后会自动生成对应的达梦数据库模式TEST;
    image.png
    image.png
    image.png
  2. 打开“DM数据迁移工具”;
  3. 右键空白处, 新进工程,命名为“mysql”;
    image.png
  4. 点击数据类型映射,在MySQL中增加 VARCHAR,并将强制为字符存储选为是;
    image.png
  5. 点击打开刚菜新建的“mysql”菜单,右键迁移,新建一个迁移任务“mysql”;
    image.png
  6. 选择迁移mysql使用MySQL ==>DM向导;
    image.png
  7. 配置mysql源 (注意,默认驱动无法连接数据库,可使用指定的驱动);
    image.png
  8. 配置达梦的目标用户;
    image.png
  9. 选择目的模式这里是之前新建的TEST,勾选掉使用默认数据类型映射关系,点击下一步;
    image.png
  10. 选择全部表,点击“下一步”;
    image.png
  11. 点击完成;
  12. 重复上述步骤,直到转换完成全部库。

代码适配:

  1. 数据库兼容性问题:
    a) 需要在数据库链接的url上添加参数:
    compatible_mode=mysql&clobAsString=true

    b) 需要在达梦数据库设置:
    sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1);
    sp_set_para_value(2,'COMPATIBLE_MODE',4);
    用于解决long text的比较,clob作为字符串的读取,和其他数据兼容性的问题。

  2. 达梦数据库不存在str_to_date函数,需使用date_format函数代替;to_date函数也最好使用date_format代替。

  3. 达梦数据库不存在format函数,需使用to_char函数代替。例如:
    format(0+cast(ifnull(sum(convert(money, decimal(18,6))),0) as char),2) 可替换为
    to_char(ifnull(sum(cast(money as decimal(18, 6))), 0),'999G999G999G999G999D99')

  4. 达梦数据库不存在group_concat函数,需使用wm_concat函数代替。

  5. 达梦数据库无法识别语句中的`, 需将所有该字符去掉。

  6. springboot pagehelper dialect 无法自动识别达梦数据驱动, 需要在配置文件中指定具体的参数:

    	pagehelper:
    		helperDialect: oracle
    		reasonable: true
    		supportMethodsArguments: true
    		params: count=countSql
    
  7. 达梦数据库不存在signed类型,需使用integer代替。

  8. 达梦数据库cast as char 无法使用,需使用cast as varchar代替。

  9. 达梦数据库语句中的字符串包含单引号' 时,正确的escape方案由 \'改为 ' '

  10. 达梦数据库使用if函数,如果出现某一组数据为null的情况会报错,需使用nullif代替。

  11. 达梦数据库使用interval函数时,需要将interval后面的数字用单引号引用。

  12. 达梦数据库无法使用order by assessment+0的格式对字符串的数字部分排序,需将非数字部分替换方可按照数字顺序排序:order by (REPLACE(assessment,'M','')+0)

  13. 达梦数据库仅可以使用 insert into values 不可以使用 insert into value

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服