【数据库迁移】【SqlServer】 【MySQL】迁移【达梦8】数据库的迁移过程和注意要点

·  阅读 603
【数据库迁移】【SqlServer】 【MySQL】迁移【达梦8】数据库的迁移过程和注意要点

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

前言

  最近,在迁移适配国产化数据库;碰到一些适配的问题,因此记录一下下来。
  达梦官方技术文档eco.dameng.com/document/dm…

一些参考:
1. 达梦数据库常用函数——日期时间函数
2. 达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)

达梦数据库产品下载 产品下载 | 达梦数据库 (dameng.com) image.png

知识点

1. MySQL、SqlServer、达梦数据库的一些区别

  MySQL和SqlServer是单实例多数据库,一个用户可以访问多个数据库(即在指定数据库写sql,不用带上数据库名。)
  达梦是单数据库多实例,就是没有多个数据库的概念,只有多模式,且可通过多用户的情况去操作对应模式。

2. sql语句中的一些踩点与区别(拼接符、关键字rowNum等)

(别问达梦执行的sql语句,为什么拼接符是“||”,问达梦~ 都它X@!$$#@!)

需求说明MySQLSqlServer达梦
拼接符++||
rowNum是否为关键字
分组group_concat()-wm_concat()
时间日期date_add()-add_days()
日期转换DATE()-TO_DATE()
DATE_SUB()函数使用 INTERVAL 时INTERVAL 1 DAY (数字不用加单引号)-INTERVAL '1' DAY (数字要加单引号)

要点

1. 使用达梦8创建数据库时,注意字符集,是否选择对应的UTF-8。(基本都要选择UTF-8,不然后面数据迁移会出现中文乱码)

linux指令操作:./dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=LUCIFER
(CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR];1 代表 UTF-8;2 代表韩文字符集 EUC-KR;取值 0、1 或 2 之一。默认值为 0。)
可视化界面:
image.png

2. 多个数据库,达梦8如何进行连接对应模式(单数据库,在达梦里对应的是模式)

  前因:由于达梦数据库是单库多实例,实现原始多数据库的情况只能多个模式。那么多模式,如何在查询的时候不带上模式名呢?
  以下有两种方法:
 方法一:创建多个管理用户,实现管理对应模式进行查询时,不用带上模式名。
 方法二:在JDBC方言中,添加schema参数,指定模式名。md8.jdbc.url=jdbc:dm://127.0.0.1:5236?schema=MyDM8Project

3. 忽略字符串比较大小写敏感

image.png

迁移过程

1. 创建达梦数据库实例

image.png


image.png
image.png

2.JDBC 和 Hibernate 相关的配置

DM8
jdbc.dm8.driverClassName=dm.jdbc.driver.DmDriver
jdbc.dm8.url=jdbc:dm://127.0.0.1:5236?schema=MyDM8Project&useUnicode=true&charset=UTF-8
jdbc.dm8.username=user
jdbc.dm8.password=pwd
hibernate.dialect=org.hibernate.dialect.DmDialect
复制代码

3.需要的 jar 包

达梦官方文档-解决问题
需要用到的jar包都在 ../dmdbms/drivers/ 路径下: image.png

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》
  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
   我是南方者,一个热爱计算机更热爱祖国的南方人。
  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)

分类:
后端
收藏成功!
已添加到「」, 点击更改