当前位置: 首页 > news >正文

如何在项目中使用人大金仓替换mysql

文章目录

  • 数据库连接配置调整
    • 驱动和连接字符串修改:
    • 用户名和密码:
  • SQL 语法兼容性检查
    • 数据类型差异处理:
    • 函数差异:
    • SQL语句
    • 客户端 SQL 交互工具
  • 数据迁移
    • 数据库、用户移植
    • 数据迁移工具使用:
    • 迁移过程中的问题及解决方案
  • 迁移后项目功能状态

数据库连接配置调整

驱动和连接字符串修改:

  1. 在项目的配置文件(如 Spring Boot 项目中的application.properties或application.yml)中,将 MySQL 的驱动类名和连接字符串替换为人大金仓数据库对应的内容。
  2. 对于 MySQL,连接字符串通常是jdbc:mysql://localhost:3306/your_database_name,驱动类名是com.mysql.cj.jdbc.Driver。而人大金仓数据库的连接字符串一般是jdbc:kingbase8://localhost:54321/your_database_name?currentSchema=mycnblog,驱动类名是com.kingbase8.Driver
  3. 例如,在application.properties文件中修改如下:
    原 MySQL 配置:
 spring.datasource.driver - class - name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
  1. 修改为人大金仓数据库配置:
 spring.datasource.driver - class - name=com.kingbase8.Driverspring.datasource.url=jdbc:kingbase8://localhost:54321/your_database_name

用户名和密码:

同时,确保数据库用户名和密码正确配置。如果在 MySQL 和人大金仓数据库中的用户名和密码不同,需要在配置文件中更新为人大金仓数据库的登录凭证。

SQL 语法兼容性检查

数据类型差异处理:

KingbaseES 对 MySQL的基本数据类型如数值类型(整型、浮点型、定点数类型)、文本字符串类型(CHAR、VARCHAR、TINYTEXT、MEDIUMTEXT、LONGTEXT)、位类型、日期时间类型(YEAR、TIME、DATE、DATETIME、TIMESTAMP)、枚举类型ENUM、集合类型SET、二进制类型(BINARY、VARBINARY、BLOB)、空间类型(GEOMETRY、POINT、LINESTRING、POLYGON)、JSON类型(JSON对象、JSON数组)可以原生支持,或者通过转换进行支持

具体兼容与转换点击这里查看

函数差异:

  • 兼容MySQL常用的日期时间函数

  • 兼容数值函数,如:ABS、ACOS、CEIL、CEILING等

  • 兼容BIT_LENGTH、CHAR_LENGTH、CONCAT、FIND_IN_SET、OCTET_LENGTH等字符函数

  • 兼容AVG、BIT_AND、BIT_OR、GROUP_CONCAT、STDDEV_POP等聚集函数

  • 兼容CUME_DIST、DENSE_RANK、FIRST_VALUE、LAST_VALUE等窗口函数

  • 兼容JSON函数

  • 兼容和base64的转换函数:to_base64、from_base64等

具体函数差异点击这里查看

SQL语句

在 KingbasES 中,对大多数常用的 MySQL特有 SQL 语句均提供了原生支持。这项措施使得 MySQL 应用程序在 KingbaseES 系统中通常只需很少的代码变动就可正常运行。

  • KingbaseES 主要兼容如下 MySQL 的 SQL 语句:

  • CALL语句

  • DO语句

  • EXCEPT、INTERSECT、UNION 语句

  • DELETE FROM [PARTITION]

  • HANDLER 语句

  • INSERT … SELECT

  • INSERT … SET

  • INSERT … ON DUPLICATE KEY UPDATE

  • LOAD DATA/XML

  • REPLACE INTO

  • SELECT … LIMIT

  • SELECT … INTO

  • SELECT … JOIN

  • SELECT … UNION/INTERSECT/EXCEPT

  • 包含等号操作符的子查询

  • 包含比较操作符的子查询

  • 包含ANY、IN、SOME的子查询

  • 包含ALL的子查询

  • 行子查询

  • 包含EXISTS、NOT EXISTS的子查询

  • 包含对外层查询表引用的子查询

  • 包含FROM子句的子查询

  • TABLE语句

  • UPDATE语句

  • VALUES语句

  • WITH AS语句

  • START TRANSACTION

  • COMMIT、ROLLBACK

  • SAVEPOINT、ROLLBACK TO SAVEPOINT、RELEASE SAVEPOINT等
    点击查看详细的sql差异详情1
    点击查看详细的sql差异详情2

客户端 SQL 交互工具

在实际应用中,通常客户 DDL 脚本和报表是通过 SQL 交互工具移植的。针对这种情况,KingbaseES 提供了如下 SQL 交互工具:

ksql:命令行的 SQL 交互工具,类似 MySQL 的 命令行。

Kstudio:图形化的 SQL 交互工具,类似 MySQL的图形化工具。

通过上述工具,用户可连接数据库服务器,运行数据库实用程序,发送 SQL 语句,运行 SQL 脚本,或运行KingbaseES 数据库管理命令实施数据库管理等。

数据迁移

数据库、用户移植

数据库是各种 SQL 和 PL/SQL 数据库对象的存放容器,而用户是这些对象的管理者和使用者。因此,在迁移数据库对象之前,一般应先迁移数据库、用户。

那么,如何移植这些内容呢?应在目的数据库 KingbaseES 上创建与源数据库 MySQL同名的数据库、用户。

另外,所创建数据库的字符集应与 MySQL数据库字符集一致.

数据迁移工具使用:

使用KingBase自带的迁移工具(KDTS进行数据迁移).
数据库迁移工具在完全安装时已经安装好了, 点击开始, 找到数据库迁移工具, 双击打开.
在这里插入图片描述

  1. 然后在浏览器中输入url: http://127.0.0.1:54523, 使用在金仓官网注册的账号进行登录.

  2. 登录成功后在数据源管理中添加源库和目标库连接. 在添加时需要输入必要的连接信息.
    在这里插入图片描述

  3. 之后在迁移任务管理中新建迁移任务, 按照指引填写必要的对比信息.
    在这里插入图片描述

迁移过程中的问题及解决方案

  1. 数据类型转换的问题:
    在新建迁移任务时, 最后一步是配置数据类型的参数, 这里有一些参数根据自己的需要进行更改, 否则可能会造成数据缺失等的问题. 如图
    在这里插入图片描述
    针对源数据类型是varchar时, 在源库中制定了长度的, 目标库中也会指定长度. 在源库中没有指定长度时, KingBase会默认长度为1, 这样在迁移过程中会对数据进行截取. 造成数据缺失的情况. 可以在配置中进行更改从而防止此问题.
    以上例为参考, 对其他类型的数据也需要进行必要配置. 以保证数据完整性和可用性.
  2. 持续更新中…

迁移后项目功能状态

目前正常.


http://www.mrgr.cn/news/79995.html

相关文章:

  • 单目深度估计模型 lite-mono 测试
  • 如何使用程序查询域名whois信息?(带PHP/C#示例)
  • all/any函数可以对“条件”打包(Python)
  • 解决VSCode无法识别相对路径的问题
  • 使用 mkcert 工具自签发 https 证书并进行本地受信
  • es 3期 第15节-词项查询与跨度查询实战运用
  • chattts生成的音频与字幕修改完善,每段字幕对应不同颜色的视频,准备下一步插入视频。
  • ArcGIS MultiPatch数据转换Obj数据
  • 优秀前端文章笔记----持续更新(20241211-至今)
  • YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city
  • 麒麟系统+达梦数据库+MybatisPlus+Redis+SpringBoot
  • 使用Windbg排查C++软件安装包安装时被安全软件拦截导致安装堵塞(线程卡住)的问题
  • 360极速浏览器不支持看PDF
  • MinerU:PDF文档提取工具
  • 在CentOS中安装和卸载mysql
  • centos部署SkyWalking以及在springcloud项目中搭配loki使用
  • 【优选算法 模拟】模拟算法入门详解 : 模拟算法小专题
  • Gitlab ci/cd
  • Maven插件打包发布远程Docker镜像
  • strace,tcmalloc,asan使用