如何在项目中使用人大金仓替换mysql
文章目录
- 数据库连接配置调整
- 驱动和连接字符串修改:
- 用户名和密码:
- SQL 语法兼容性检查
- 数据类型差异处理:
- 函数差异:
- SQL语句
- 客户端 SQL 交互工具
- 数据迁移
- 数据库、用户移植
- 数据迁移工具使用:
- 迁移过程中的问题及解决方案
- 迁移后项目功能状态
数据库连接配置调整
驱动和连接字符串修改:
- 在项目的配置文件(如 Spring Boot 项目中的application.properties或application.yml)中,将 MySQL 的驱动类名和连接字符串替换为人大金仓数据库对应的内容。
- 对于 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
。 - 例如,在application.properties文件中修改如下:
原 MySQL 配置:
spring.datasource.driver - class - name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
- 修改为人大金仓数据库配置:
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进行数据迁移).
数据库迁移工具在完全安装时已经安装好了, 点击开始, 找到数据库迁移工具, 双击打开.
-
然后在浏览器中输入url:
http://127.0.0.1:54523
, 使用在金仓官网注册的账号进行登录. -
登录成功后在数据源管理中添加源库和目标库连接. 在添加时需要输入必要的连接信息.
-
之后在迁移任务管理中新建迁移任务, 按照指引填写必要的对比信息.
迁移过程中的问题及解决方案
- 数据类型转换的问题:
在新建迁移任务时, 最后一步是配置数据类型的参数, 这里有一些参数根据自己的需要进行更改, 否则可能会造成数据缺失
等的问题. 如图
针对源数据类型是varchar
时, 在源库中制定了长度的, 目标库中也会指定长度. 在源库中没有指定长度时,KingBase
会默认长度为1, 这样在迁移过程中会对数据进行截取. 造成数据缺失
的情况. 可以在配置中进行更改从而防止此问题.
以上例为参考, 对其他类型的数据也需要进行必要配置. 以保证数据完整性和可用性. - 持续更新中…
迁移后项目功能状态
目前正常.