关于业务库从MySQL迁移到DM8的操作指南

升级前准备

jdbc:dm://10.252.10.15:5237
username: datashare
password: datashare123

把当前MySQL数据库下的数据库表以及数据迁移到DM8。通过达梦8自带的工具可以实现迁移(仅支持Win)

DM8管理工具下载:https://www.dameng.com/DM8.html

迁移数据参考博客:https://portal.shadowsocks.au/clientarea.php?action=productdetails&id=1473863

注意:MySQL的DateTime类型到了DM8会自动转为Timestamp,要注意在同步的时候,配置表手动修改为DateTime

项目修改

  1. 新增Maven依赖
<!-- dm8驱动-->
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.2.192</version>
</dependency><!-- dm8方言包,和驱动一个版本 -->
<dependency><groupId>com.dameng</groupId><artifactId>DmDialect-for-hibernate5.3</artifactId><version>8.1.2.192</version>
</dependency>
  1. Nacos配置改成DM8数据源
primary: slave
slave:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://10.252.10.15:5237?schema=ds_exchangeusername: datasharepassword: datashare123
  1. 在MybatisConfig类下新增Bean
@Bean
@ConditionalOnMissingBean
public DatabaseIdProvider getDatabaseIdProvider() {DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();Properties p = new Properties();p.setProperty("DM DBMS", "dm");p.setProperty("MySQL", "mysql");databaseIdProvider.setProperties(p);return databaseIdProvider;
}
  1. Mapper.xml文件的SQL冗余两份,用databaseId隔离,后面上线如果遇到语法不兼容,可以直接修改在databaseId=dm的SQL

    例如:

    原来的:

   <select id="getDetailById" resultMap="syncJobWithFlowInfoMap">select j.id, j.owner_ids, j.owner_names, j.source_id, j.target_id, j.project_id, j.properties, j.xxl_job_info_id, j.remark, j.name, j.status, j.parent_id, j.ancestors, j.job_catalog_id, j.CREATE_TIME, j.MODIFY_TIME, j.CREATOR_ID, j.UPDATER_ID, f.name catalog_namefrom sync_job_info j left join sync_job_catalog f on f.id = j.job_catalog_id where j.delete_status=0 and j.id = #{id}</select>

​ 修改后:

<select id="getDetailById" resultMap="syncJobWithFlowInfoMap" databaseId="mysql">select j.id, j.owner_ids, j.owner_names, j.source_id, j.target_id, j.project_id, j.properties, j.xxl_job_info_id, j.remark, j.name, j.status, j.parent_id, j.ancestors, j.job_catalog_id, j.CREATE_TIME, j.MODIFY_TIME, j.CREATOR_ID, j.UPDATER_ID, f.name catalog_namefrom sync_job_info j left join sync_job_catalog f on f.id = j.job_catalog_id where j.delete_status=0 and j.id = #{id}
</select><select id="getDetailById" resultMap="syncJobWithFlowInfoMap" databaseId="dm">select j.id, j.owner_ids, j.owner_names, j.source_id, j.target_id, j.project_id, j.properties, j.xxl_job_info_id, j.remark, j.name, j.status, j.parent_id, j.ancestors, j.job_catalog_id, j.CREATE_TIME, j.MODIFY_TIME, j.CREATOR_ID, j.UPDATER_ID, f.name catalog_namefrom sync_job_info j left join sync_job_catalog f on f.id = j.job_catalog_id where j.delete_status=0 and j.id = #{id}
</select>

问题总结

序号问题原因解决方案备注
1生成id问题dm不支持UUID可使用sys_guid代替例如:sys_guid AS bill_Id
2求两个时间相差天数dm不支持DATEDIFF可使用BIGDATEDIFF代替例如:BIGDATEDIFF(DAY,admission_time,discharge_time)
3group by 关键字后面不能使用字段的别名直接使用字段本身
4group by 时 select 除了聚合字段和聚合参数,其他字段不允许查询默认标准select限制修改标准语法例如:select type,count(id) from t_1 group by type
5mysql中DATEDIFF和 dm中BIGDATEDIFF 参数位置位置相反示例:
mysql :select DATEDIFF(discharge_time,admission_time) from drg_idl_performance_basic;
dm:select BIGDATEDIFF(DAY,admission_time,discharge_time) from drg_idl_performance_basic
6表备份时,若表的主键是自增会报错自增字段不能插入自己值在复制表的创建sql语句中去掉“IDENTITY(1, 1)”,备份成功后再修改表主键为自增列
7STR_TO_DATE()不支持使用TO_DATE()代替实例:TO_DATE( rysj,‘YYYYMMDD’) ;不支持%Y%m%d 写法
8列长度超出定义达梦数据库一个汉字占2个长度,mysql为1个对于存储汉字的列,长度比mysql多定义一倍
9DATE_SUB( now( ), INTERVAL 1 DAY )dm中INTERVAL 1 DAY 需要给1加上‘1’才可以使用DATE_SUB( now( ), INTERVAL ‘1’ DAY )
10replace into 不支持使用 merge into 代替

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 95. 不同的二叉搜索树 II

文章目录 题目代码&#xff08;9.21 首刷看解析&#xff09; 题目 Leetcode 95. 不同的二叉搜索树 II 代码&#xff08;9.21 首刷看解析&#xff09; class Solution { public:vector<TreeNode*> generateTrees(int n) {return build(1,n);}vector<TreeNode*> bu…

将本地前端工程中的npm依赖上传到Nexus

【问题背景】 用Nexus搭建了内网的依赖仓库&#xff0c;需要将前端工程中node_modules中的依赖上传到Nexus上&#xff0c;但是node_modules中的依赖已经是解压后的状态&#xff0c;如果直接机械地将其简单地打包上传到Nexus&#xff0c;那么无法通过npm install下载使用。故有…

Jenkins Job的Migrate之旅

场景 使用Jenkins 做为应用的定时任务处理&#xff0c; 在上面建立的800个左右的Job, 这个环境运行了很多年&#xff0c; 当初安装的最新版本是Jenkins 1.642.3&#xff0c; 现在因为OS需要升级等原因&#xff0c; 驻在上面的Jenkins 服务器也需要一并升级&#xff0c;在新的服…

Mock.js之Element-ui搭建首页导航与左侧菜单

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1、Mock.js的使用 1.1.什么是Mock.js Mock.js是一个模拟数据的生成器&#xff0c;用来帮助前…

浅谈C++|文件篇

C中的文件操作是通过使用文件流来实现的。文件流提供了对文件的输入和输出功能。下面是C文件操作的基本步骤&#xff1a; 1. 包含头文件&#xff1a;首先&#xff0c;包含 <fstream> 头文件&#xff0c;它包含了进行文件操作所需的类和函数。 2 . 进行文件读写操作&#…

9领域事件

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库实体与值对象应用服务与领域服务领域事件&#xff08;本文&#xff09;CQRS 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…

Windows专业版的Docker下载、安装与启用Kubenetes、访问Kubernetes Dashboard

到Docker 官网https://www.docker.com/ 下载windows操作系统对应的docker软件安装 Docker Desktop Installer-Win.exe 2023-09版本是4.23 下载后双击安装 重启windows后&#xff0c;继续安装 接受服务继续安装 解决碰到的Docker Engine stopped 打开 控制面板》程序》启用或关…

Python 与 Qt c++ 程序共享内存,传递图片

python 代码 这里Python 使用 shared_memory QT 使用 QSharedMemory 简单协议&#xff1a; 前面4个字节是 图片with,height,0,0 后面是图片数据 import sys import struct def is_little_endian():x0x12345678y struct.pack(I,x)return y[0]0x78print(f"is_little_end…

软件测试/测试开发丨利用人工智能ChatGPT自动生成PPT

点此获取更多相关资料 简介 PPT 已经渗透到我们的日常工作中&#xff0c;无论是工作汇报、商务报告、学术演讲、培训材料都常常要求编写一个正式的 PPT&#xff0c;协助完成一次汇报或一次演讲。PPT相比于传统文本的就是有布局、图片、动画效果等&#xff0c;可以给到观众更好…

css有用的小技巧(vue2)

1、希望悬浮的时候&#xff0c;img图标的src改变 <template><div style"padding: 20px"><img src"../static/icon/1.svg"></div> </template> <style scoped>img:hover {content: url(../static/icon/2.svg);} </…

第一百五十四回 如何实现滑动菜单

文章目录 概念介绍实现方法示例代码体验分享 我们在上一章回中介绍了滑动窗口相关的内容相关的内容&#xff0c;本章回中将介绍如何实现 滑动菜单.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的滑动菜单表示屏幕上向左或者向右滑动滑动时弹…

服务器卡顿了该如何处理?

服务器卡顿了该如何处理&#xff1f; 当Windows系统的服务器出现卡顿问题时&#xff0c;以下是一些常见的故障排除步骤&#xff1a; 1.检查网络连接&#xff1a;确保服务器的网络连接正常。检查网络设备、交换机、防火墙等设备&#xff0c;确保它们正常运行。尝试通过其他计算…

自注意力机制

回顾以下注意力机制&#xff1a; 自注意力机制 Self-Attention的关键点 在于 K ≈ \approx ≈V ≈ \approx ≈Q 来源于同一个X&#xff0c;三者是同源的&#xff0c;通过 W Q W_Q WQ​, W K W_K WK​, W V W_V WV​做了一层线性变换。 接下来步骤和注意力机制一模一样。 …

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

spring framework 5.2 AOP - spring低级的api

内容目录 1.Pointcut 切点切入点的操作 2.Spring 中的通知 APIadvice通知的生命周期 AOP的一般定义&#xff1a; AOP是一种编程范式&#xff0c;用于将关注点&#xff08;concerns&#xff09;从应用程序的主要业务逻辑中解耦。 关注点是指在应用程序中横切多个模块或组件的功…

【项目实战】Linux系统下jar包自启动

什么是jar包自启动 在Linux系统中&#xff0c;"jar包自启动"是指通过配置将Java程序打包成可执行的Jar文件&#xff0c;并设置其在系统启动时自动运行。以下是与jar包自启动相关的一些概念&#xff1a; Jar文件&#xff1a;Jar&#xff08;Java Archive&#xff09…

05贪心:买卖股票的最佳时机 II

05贪心&#xff1a;买卖股票的最佳时机 II 122. 买卖股票的最佳时机 II 这道题目可能我们只会想&#xff0c;选一个低的买入&#xff0c;再选个高的卖&#xff0c;再选一个低的买入…循环反复。 如果想到其实最终利润是可以分解的&#xff0c;那么本题就很容易了&#xff01…

蓝牙核心规范(V5.4)10.10-BLE 入门笔记之SMP和安全性

蓝牙篇之蓝牙核心规范(V5.4)深入详解汇总 1.概述 SMP是安全管理器协议,用于蓝牙低功耗系统的安全管理。SMP协议定义了配对和Key的分发过程的实现,以及用于实现这些方法的协议和工具。SMP的内容主要是配对和Key的分发,然后用Key对链路或数据进行加密 。 安全管理器协议(…

typedoc参数列表解释

输入选项 名称说明entryPoints这个选项用于指定Typedoc生成的文档的入口点。入口点是指被文档化的对象的定义所在的文件或模块。通过指定入口点&#xff0c;Typedoc可以找到被文档化的对象&#xff0c;并生成相应的文档。这个选项可以接受一个字符串或字符串数组&#xff0c;用…

K-最近邻算法

一、说明 KNN算法是一个分类算法&#xff0c;基本数学模型是距离模型。K-最近邻是一种超级简单的监督学习算法。它可以应用于分类和回归问题。虽然它是在 1950 年代引入的&#xff0c;但今天仍在使用。然而如何实现&#xff0c;本文将给出具体描述。 来源&#xff1a;维基百科 …