Mysql数据迁移到KingBase9(人大金仓数据库)实战操作过程

 更新时间:2026年07月30日 08:59:50   作者:Seven小七  
电科金仓数据库管理系统 KingbaseES(KES)是面向全行业、全客户关键应用的企业级大型通用数据库管理系统,这篇文章主要介绍了Mysql数据迁移到KingBase9(人大金仓数据库)的相关资料,需要的朋友可以参考下

注:本文示例均在Win11系统下进行

一.迁移前准备

1.下载安装包及授权文件

点击进入官网:kingbase.com.cn

下载完整安装包

下载授权文件

2.安装

选择刚刚下载的授权文件

安装完成后会出现三个软件

二.数据库迁移

注:因为我已经迁移过了,下面有迁移工具界面的部分,截图展示修改页来用以说明新建操作

 1.打开数据库开发管理工具软件(可使用navicat的PG连接方式,也可使用官方提供的[数据库开发管理工具]),连接上目标数据库,创建好迁移的目标数据库、模式

2.定义要迁移的数据库中的序列,例如:

-- ----------------------------
-- Sequence structure for gen_table_column_column_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "svc_gen"."gen_table_column_column_id_seq";
CREATE SEQUENCE "svc_gen"."gen_table_column_column_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

-- ----------------------------
-- Sequence structure for gen_table_table_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "svc_gen"."gen_table_table_id_seq";
CREATE SEQUENCE "svc_gen"."gen_table_table_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

....

3.启动web迁移工具DTS

进入KingBase的安装目录如: <安装目录>\Kingbase\ES\V9\KESRealPro\V009R001C001B0025\ClientTools\guitools\KDts\KDTS-WEB\bin

在powershell中打开.\startup.bat

4.打开数据迁移工具软件,浏览器打开http://localhost:8080

5.添加源数据库

注意数据库类型和数据库版本

6.添加目标数据库

这里要注意, 是从Mysql迁入KingBase , 所以目标数据库要以PG的兼容模式配置!

7.新建迁移任务

8.选择目标数据库的模式(schema)

因为mysql没有模式的说法, 通常推荐先将数据迁入kingbase的public模式下

9.数据库迁移配置(此步可检查数据类型映射) 迁移工具会将mysql中的类型自动转换为kingbase的字段类型,通常这一步不需要修改,点击保存并迁移。开始执行迁移任务。

 可以通过页面迁移结果来查看迁移结果详情

tips:

1.关于模式选择:如果不存在和当前连接用户同名的模式,则默认访问public模式, 如果不是用户希望访问的模式,则需要在表名称前加模式名访问。

通过  localhost:54321/mydatabase?currentSchema=?currentSchema=myschema 可以指定默认模式。 这样就不需要在表名前加模式名了。

2.关于预置系统模式的乱入到public导致找不到表(doesn't table....):

人大金仓目前有个坑, 当使用sys_config,sys_user时会触发系统关键字, 导致乱入到public模式下

可通过tips1中的方式取个巧在数据库连接中配置 localhost:54321/mydatabase?currentSchema=svc_system,svc_gen,SYS_CATALOG 

这样既可将含有这个系统表的模式囊括在内。

3.ruoyi-cloud迁移到kingbase数据后报

### Cause: com.kingbase8.util.KSQLException: ERROR: duplicate key value violates unique constraint "PRIMARY_7921EFE7"
  Detail: Key (oper_id)=(2) already exists.
; ERROR: duplicate key value violates unique constraint "PRIMARY_7921EFE7"

可通过执行SELECT setval('sys_oper_log_oper_id_seq', (SELECT MAX(oper_id) FROM sys_oper_log)+1)来将底数刷到与历史数据一致

旧数据迁移的表含有自增序列的都有可能发生此错误,保险起见, 刷12张表,刷表语句如下:

SELECT setval('sys_config_config_id_seq', (SELECT MAX(config_id) FROM "svc_system".sys_config)+1);
SELECT setval('sys_dept_dept_id_seq', (SELECT MAX(dept_id) FROM "svc_system".sys_dept)+1);
SELECT setval('sys_dict_data_dict_code_seq', (SELECT MAX(dict_code) FROM "svc_system".sys_dict_data)+1);
SELECT setval('sys_dict_type_dict_id_seq', (SELECT MAX(dict_id) FROM "svc_system".sys_dict_type)+1);
SELECT setval('sys_job_job_id_seq', (SELECT MAX(job_id) FROM "svc_system".sys_job)+1);
SELECT setval('sys_job_log_job_log_id_seq', (SELECT MAX(job_log_id) FROM "svc_system".sys_job_log)+1);
SELECT setval('sys_logininfor_info_id_seq', (SELECT MAX(info_id) FROM "svc_system".sys_logininfor)+1);
SELECT setval('sys_menu_menu_id_seq', (SELECT MAX(menu_id) FROM "svc_system".sys_menu)+1);
SELECT setval('sys_notice_notice_id_seq', (SELECT MAX(notice_id) FROM "svc_system".sys_notice)+1);
SELECT setval('sys_post_post_id_seq', (SELECT MAX(post_id) FROM "svc_system".sys_post)+1);
SELECT setval('sys_role_role_id_seq', (SELECT MAX(role_id) FROM "svc_system".sys_role)+1);
SELECT setval('sys_user_user_id_seq', (SELECT MAX(user_id) FROM "svc_system".sys_user)+1);

总结

到此这篇关于Mysql数据迁移到KingBase9(人大金仓数据库)的文章就介绍到这了,更多相关Mysql数据迁移到KingBase9内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql的InnoDB使用行锁的限制

    mysql的InnoDB使用行锁的限制

    本文主要介绍了mysql的InnoDB使用行锁的限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • MySQL数据库数据删除操作详解

    MySQL数据库数据删除操作详解

    本文我们将要学习的是作为删除数据使用的 “DELETE” 语句,“DELETE” 语句是用来删除数据的,它不能用来删除数据表本身。删除数据表使用的是 “DROP” 语句,而 “DELETE” 的作用只是用来删除记录而已
    2022-08-08
  • Mysql 坏表修复的几种解决方案

    Mysql 坏表修复的几种解决方案

    本文详细介绍了MySQL表损坏的诊断和修复方法,针对不同存储引擎(MyISAM和InnoDB)提供具体解决方案,感兴趣的可以了解一下
    2025-11-11
  • Mysql中where与having的区别实例详解

    Mysql中where与having的区别实例详解

    当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句,下面这篇文章主要给大家介绍了关于Mysql中where与having区别的相关资料,需要的朋友可以参考下
    2023-01-01
  • MySQL存储过程中的基本函数和触发器的相关学习教程

    MySQL存储过程中的基本函数和触发器的相关学习教程

    这篇文章主要介绍了MySQL存储过程中的基本函数和触发器的相关学习教程,包括触发器的创建和删除等基本操作,需要的朋友可以参考下
    2015-11-11
  • MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解

    MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解

    本文全面讲解了MySQL中锁包括表锁,行锁,共享锁,排它锁,间隙锁的详细使用方法
    2018-10-10
  • MySQL 5.7.22 二进制包安装及免安装版Windows配置方法

    MySQL 5.7.22 二进制包安装及免安装版Windows配置方法

    这篇文章通过实例代码给大家介绍了MySQL 5.7.22 二进制包安装教程,文章末尾给大家补充介绍了mysql 5.7.22 免安装版Windows配置方法,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-08-08
  • MySQL GTID主备不一致的修复方案

    MySQL GTID主备不一致的修复方案

    这篇文章主要介绍了MySQL GTID主备不一致的修复方案,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-04-04
  • 数据库性能测试之sysbench工具的安装与用法详解

    数据库性能测试之sysbench工具的安装与用法详解

    sysbench是一个很不错的数据库性能测试工具,这篇文章主要给大家介绍了关于数据库性能测试之sysbench工具的安装与用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • MySQL使用B+Tree当索引的优势有哪些

    MySQL使用B+Tree当索引的优势有哪些

    这篇文章主要介绍了MySQL使用B+Tree当索引有哪些优势,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03

最新评论