【数据库迁移】【SqlServer】 【MySQL】迁移【达梦8】数据库的迁移过程和注意要点
前言
最近,在迁移适配国产化数据库;碰到一些适配的问题,因此记录一下下来。 达梦官方技术文档:eco.dameng.com/document/dm…
达梦数据库产品下载 产品下载 | 达梦数据库 (dameng.com)
知识点
1. MySQL、SqlServer、达梦数据库的一些区别
MySQL和SqlServer是单实例多数据库,一个用户可以访问多个数据库(即在指定数据库写sql,不用带上数据库名。) 达梦是单数据库多实例,就是没有多个数据库的概念,只有多模式,且可通过多用户的情况去操作对应模式。
2. sql语句中的一些踩点与区别(拼接符、关键字rowNum等)
(别问达梦执行的sql语句,为什么拼接符是“||”,问达梦~ 都它X@!$$#@!)
需求说明 | MySQL | SqlServer | 达梦 |
---|---|---|---|
拼接符 | + | + | || |
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。)可视化界面:
2. 多个数据库,达梦8如何进行连接对应模式(单数据库,在达梦里对应的是模式)
前因:由于达梦数据库是单库多实例,实现原始多数据库的情况只能多个模式。那么多模式,如何在查询的时候不带上模式名呢? 以下有两种方法: 方法一:创建多个管理用户,实现管理对应模式进行查询时,不用带上模式名。 方法二:在JDBC方言中,添加schema参数,指定模式名。md8.jdbc.url=jdbc:dm://127.0.0.1:5236?schema=MyDM8Project
3. 忽略字符串比较大小写敏感
迁移过程
1. 创建达梦数据库实例
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/
路径下:
文章小尾巴
转载自:https://juejin.cn/post/7146195995875885092