java每日精进 2.13 MySql迁移人大金仓
1.迁移数据库
1. 数据库创建语句
- MySQL:
CREATE DATABASE dbname; - 人大金仓(Kingbase):
- 在人大金仓中,
CREATE DATABASE的语法通常相同,但可能需要特别注意字符集的指定(如果涉及到多语言支持等),人大金仓默认使用UTF-8编码。
CREATE DATABASE dbname ENCODING='UTF8'; - 在人大金仓中,
2. 数据类型差异
-
BOOLEAN类型:- MySQL 将
BOOLEAN映射为TINYINT(1),而 人大金仓 使用BOOLEAN类型(与 PostgreSQL 相同)。 - MySQL:
CREATE TABLE example (flag BOOLEAN); - 人大金仓:
CREATE TABLE example (flag BOOLEAN);
- MySQL 将
-
AUTO_INCREMENT和SERIAL:- MySQL 使用
AUTO_INCREMENT来定义自增字段,而 人大金仓 使用SERIAL。 - MySQL:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY); - 人大金仓:
CREATE TABLE users (id SERIAL PRIMARY KEY);
- MySQL 使用
-
TEXT类型:- 在 MySQL 中,
TEXT是可以存储长文本的类型,而 人大金仓(基于 PostgreSQL)也使用TEXT,但它支持更复杂的文本操作。 - MySQL:
CREATE TABLE article (content TEXT); - 人大金仓:
CREATE TABLE article (content TEXT);
- 在 MySQL 中,
-
ENUM类型:- MySQL 支持
ENUM类型,但人大金仓没有直接支持这个类型。如果需要在人大金仓中使用ENUM,可以考虑使用CHECK约束或者VARCHAR类型,并加上合理的值限制。 - MySQL:
CREATE TABLE example (status ENUM('active', 'inactive')); - 人大金仓:
CREATE TABLE example (status VARCHAR(10) CHECK (status IN ('active', 'inactive')));
- MySQL 支持
-
DATETIME和TIMESTAMP:- MySQL 中有
DATETIME和TIMESTAMP类型,而 人大金仓 使用TIMESTAMP,它的表现可能有所不同。人大金仓会根据 PostgreSQL 的规范处理TIMESTAMP类型,可能需要特别关注时区问题。 - MySQL:
CREATE TABLE events (event_time DATETIME); - 人大金仓:
CREATE TABLE events (event_time TIMESTAMP);
- MySQL 中有
3. 表的引擎设置
- MySQL 使用
ENGINE来指定表的存储引擎(如InnoDB、MyISAM等)。 - 人大金仓(PostgreSQL)不使用
ENGINE语法,所有表都使用统一的存储引擎,所以需要删除这些与存储引擎相关的配置。 - MySQL:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB; - 人大金仓:
CREATE TABLE users (id INT SERIAL PRIMARY KEY);
4. 外键约束与索引
- MySQL 支持外键约束,人大金仓也支持,但语法上可能有些许差异(尤其是在删除/更新外键时的行为可能有所不同)。
- MySQL:
CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) ); - 人大金仓:
CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) );
5. 字符串处理函数
- MySQL 中的一些字符串处理函数与 人大金仓 中的函数可能不完全一样。例如:
- MySQL:
SELECT CONCAT(first_name, ' ', last_name) FROM users; - 人大金仓:
SELECT first_name || ' ' || last_name FROM users;
- MySQL:
6. 注释和分隔符
- MySQL 支持
--和#注释样式,但人大金仓使用--或/* */。 - MySQL:
-- This is a comment # Another comment - 人大金仓:
-- This is a comment /* Another comment */
7. LIMIT 与 FETCH
- MySQL 使用
LIMIT来限制查询的行数。 - 人大金仓(PostgreSQL)也使用
LIMIT,但在某些情况下,特别是涉及OFFSET时,可能需要调整语法。 - MySQL:
SELECT * FROM users LIMIT 10; - 人大金仓:
SELECT * FROM users LIMIT 10;
8. 日期与时间函数
- MySQL 提供许多日期和时间函数,如
NOW(),CURDATE()等。 - 人大金仓 也有类似的函数,但它们的名称和语法可能有所不同。例如,
CURRENT_TIMESTAMP是标准的 SQL 函数。 - MySQL:
SELECT NOW(); - 人大金仓:
SELECT CURRENT_TIMESTAMP;
9. 触发器和存储过程
- MySQL 和人大金仓都支持触发器和存储过程,但语法上有所不同。存储过程和函数在 MySQL 中使用
DELIMITER来指定分隔符,而人大金仓不需要使用DELIMITER,直接定义即可。 - MySQL:
DELIMITER $$ CREATE PROCEDURE my_procedure() BEGIN SELECT 'Hello, World'; END$$ DELIMITER ; - 人大金仓:
CREATE OR REPLACE PROCEDURE my_procedure() AS BEGIN RAISE NOTICE 'Hello, World'; END;
10. SQL 调试和测试
在迁移过程中,建议使用人大金仓提供的调试工具,逐步测试每个 SQL 语句,检查是否有语法或功能上的问题,特别是与数据类型、函数、触发器等相关的部分。
总结:
要将 MySQL 的 .sql 文件修改成能在人大金仓中运行的文件,主要的调整集中在以下几个方面:
- 替换 MySQL 特有的数据类型和关键字(如
AUTO_INCREMENT→SERIAL)。 - 删除与存储引擎相关的配置(如
ENGINE=InnoDB)。 - 替换不兼容的函数(如字符串拼接、日期函数等)。
- 根据人大金仓的 SQL 标准调整外键和约束的语法。
- 确保注释和分隔符的语法符合人大金仓的规范。
在修改完成后,建议在人大金仓的测试环境中运行 SQL 文件,确保没有语法错误或功能冲突。
举例:
Mysql:
CREATE TABLE `member` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,`ip` varchar(255) DEFAULT NULL,`name` varchar(255) DEFAULT NULL,`app_id` varchar(255) DEFAULT NULL,`group_id` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Kingbase:
CREATE TABLE "member" ("id" BIGSERIAL NOT NULL, -- 使用 BIGSERIAL 替代 AUTO_INCREMENT"create_time" TIMESTAMP DEFAULT NULL,-- 使用 TIMESTAMP 替代 datetime"update_time" TIMESTAMP DEFAULT NULL,"ip" VARCHAR(255) DEFAULT NULL,"name" VARCHAR(255) DEFAULT NULL,"app_id" VARCHAR(255) DEFAULT NULL,"group_id" VARCHAR(255) DEFAULT NULL,PRIMARY KEY ("id")
);
2.配置数据
人大金仓使用sql编辑器执行和导入脚本;

3.配置文件修改
原来的application.yml如下:
spring:jpa:database: mysqlshow-sql: truehibernate:ddl-auto: updatenaming:physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategydatabase-platform: org.hibernate.dialect.MySQL5InnoDBDialect #不加这句则默认为myisam引擎profiles:active: ${ENV:local}
logging:file: ./logback.log
server:port: 8888
修改后如下:
spring:jpa:show-sql: truehibernate:ddl-auto: updatenaming:physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategydatabase-platform: org.hibernate.dialect.MySQL5InnoDBDialect # 使用人大金仓兼容的Mysql的方言profiles:active: ${ENV:local} # 默认激活 local 配置文件
logging:file: ./logback.log
server:port: 8888
application-local.yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/blockchain_manager?autoReconnect=true&useUnicode=true&useSSL=falseusername: rootpassword: 123456
修改后:
spring:datasource:url: jdbc:kingbase8://localhost:54321/database8 # 人大金仓数据库的连接 URLusername: **** # 人大金仓数据库的用户名password: **** # 人大金仓数据库的密码driver-class-name: com.kingbase8.Driver # 人大金仓数据库的驱动类
application-prod.yml:
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://${MYSQL_URL}/blockchain_manager?autoReconnect=true&useUnicode=trueusername: mdpassword: ${MYSQL_PASS}
server:port: 8080
修改后:
spring:datasource:url: jdbc:kingbase8://${KINGBASE_URL}:54321/blockchain_manager # 人大金仓数据库的连接 URLusername: SYSTEM # 人大金仓数据库的用户名password: ${KINGBASE_PASS} # 人大金仓数据库的密码driver-class-name: com.kingbase8.Driver # 人大金仓数据库的驱动类
server:port: 8080
application-prod.yml 中的KINGBASE_URL以及KINGBASE_PASS在生产环境中设置环境变量即可;
可以通过终端设置环境变量。比如,如果你使用的是 bash 或 zsh,可以在终端中使用以下命令设置环境变量:
export KINGBASE_URL=your_kingbase_url
export KINGBASE_PASS=your_kingbase_password
如果你希望在每次启动终端时都能自动设置这些环境变量,可以将这些命令添加到 ~/.bashrc(或者 ~/.zshrc)文件中:
echo "export KINGBASE_URL=your_kingbase_url" >> ~/.bashrc
echo "export KINGBASE_PASS=your_kingbase_password" >> ~/.bashrc
注:如何在 Spring Boot 中引用环境变量
在 application-prod.yml 文件中引用环境变量时,Spring Boot 会自动解析环境变量并将其替换。例如:
spring:datasource:url: jdbc:kingbase8://${KINGBASE_URL}:54321/blockchain_managerusername: SYSTEMpassword: ${KINGBASE_PASS}driver-class-name: com.kingbase8.Driver
相关文章:
java每日精进 2.13 MySql迁移人大金仓
1.迁移数据库 1. 数据库创建语句 MySQL: CREATE DATABASE dbname; 人大金仓(Kingbase): 在人大金仓中,CREATE DATABASE 的语法通常相同,但可能需要特别注意字符集的指定(如果涉及到多语言支持…...
【R语言】回归分析与判别分析
一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…...
ES6中Object.defineProperty 的详细用法和使用场景以及例子
ES6 Object.defineProperty() 用法总结 Object.defineProperty() 是 ES5 引入的一个方法,ES6 继续强化了该方法的使用,它允许我们为对象的属性定义或修改 属性描述符。它能够控制对象属性的行为,如读写权限、可枚举性和可配置性。 1. Objec…...
揭秘云计算 | 5、关于云计算效率的讨论
一、 公有云效率更高? 解:公有云具有更高的效率。首先我们需要知道效率到底指的是什么。这是个亟须澄清的概念。在这里效率是指云数据中心(我们将在后文中介绍其定义)中的IT设备资源利用率,其中最具有代表性的指标就是…...
【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解
Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我们已经将进程通信部分讲完了,现在我们来讲一个进程部分也非常重要的知识点——信号,信号也是进程间通信的一…...
如何查询网站是否被百度蜘蛛收录?
一、使用site命令查询 这是最直接的方法。在百度搜索框中输入“site:你的网站域名”,例如“site:example.com”(请将“example.com”替换为你实际的网站域名)。如果搜索结果显示了你的网站页面,并且显示了收录的页面数量…...
什么是网络安全审计?网络安全审计的作用...
网络安全审计通过对网络数据的采集、分析、识别,实时动态监测通信内容、网络行为和网络流量,发现和捕获各种敏感信息、违规行为,实时报警响应,全面记录网络系统中的各种会话和事件,实现对网络信息的智能关联分析、评估…...
EasyExcel实现excel导入(模版上传)
目录 效果pom.xmlapplication.ymlcontrollerservice依赖类前台vue代码某个功能如果需要添加大量的数据,通过一条条的方式添加的方式,肯定不合理,本文通过excel导入的方式来实现该功能,100条数据导入成功85条,失败15条,肯定需要返回一个表格给前台或者返回1个错误excel给前…...
Vue 3最新组件解析与实践指南:提升开发效率的利器
目录 引言 一、Vue 3核心组件特性解析 1. Composition API与组件逻辑复用 2. 内置组件与生命周期优化 3. 新一代UI组件库推荐 二、高级组件开发技巧 1. 插件化架构设计 2. 跨层级组件通信 三、性能优化实战 1. 惰性计算与缓存策略 2. 虚拟滚动与列表优化 3. Tree S…...
【前端】如何安装配置WebStorm软件?
文章目录 前言一、前端开发工具WebStorm和VS Code对比二、官网下载三、安装1、开始安装2、选择安装路径3、安装选项4、选择开始菜单文件夹5、安装成功 四、启动WebStorm五、登录授权六、开始使用 前言 WebStorm 是一款由 JetBrains 公司开发的专业集成开发环境(IDE…...
vllm专题(一):安装-GPU
vLLM 是一个 Python 库,支持以下 GPU 变体。选择您的 GPU 类型以查看供应商特定的说明: 1. NVIDIA CUDA vLLM 包含预编译的 C++ 和 CUDA(12.1)二进制文件。 2. AMD ROCm vLLM 支持配备 ROCm 6.3 的 AMD GPU。 注意 此设备没有预构建的 wheel 包,因此您必须使用预构建的 Do…...
php文件包含
文章目录 基础概念php伪协议什么是协议协议的格式php中的协议file协议http协议ftp协议php://input协议php://filter协议php://data协议 php文件上传机制高级文件包含nginx文件日志包含临时文件包含session文件包含pear文件包含远程文件包含 基础概念 文件包含,相当…...
升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?
随着 Spring Boot 3 的发布,许多开发者开始考虑将他们的项目升级到这个新版本。Spring Boot 3 带来了许多新特性和改进,尤其是在 HTTP 请求处理方面。本文将详细介绍如何在 Spring Boot 3 中发送 HTTP 请求,并通过代码示例帮助你快速上手。 …...
分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现
分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现 目录 分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现MFO-LSSVM飞蛾扑火算法优化最小二…...
MyBatis Plus核心功能
一、条件构造器 1.为什么要学? 用于方便地构建SQL查询条件 2.如何使用? 3.实战案例 例:查询出名字中带o的,存款大于等于1000元的人的id,username,info,balance字段 数据库如图: 示例: Test void testL…...
nginx ngx_http_module(10) 指令详解
nginx ngx_http_module(10) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_v2_module:HTTP/2支持模块,允许Nginx通过HTTP/2协议与客户端进行通信。HTTP/2带来了许多性能优化,如多路复用、头部压缩和服务器推…...
【ENSP】链路聚合的两种模式
【ENSP】链路聚合的两种模式 1、背景介绍2、链路聚合的使用场景3、配置过程1、手工模式Eth-Trunk配置2、静态LACP模式Eth-Trunk 4、总结 1、背景介绍 随着网络规模的不断扩大,人们对骨干链路的带宽吞吐量和可靠性提出了越来越高的要求。在传统方案中,为…...
Windows环境安装部署minimind步骤
Windows环境安装部署minimind步骤 必要的软件环境 git git,可下载安装版,本机中下载绿色版,解压到本地目录下(如:c:\soft\git.win64),可将此路径添加到PATH环境变量中,供其他程序…...
让大模型帮我设计crnn网络及可运行demo,gpt4o豆包qwendeepseek-r1
prompt 使用 crnn 提取图像特征,给出图像好坏的二分类结果,写清楚代码备注,注释清楚向量维度大小,并给出一个可运行的 demo1、GPT-4o 以下是一个使用 CRNN(Convolutional Recurrent Neural Network)提取图…...
代码随想录-- 第一天图论 --- 岛屿的数量
99 统计岛屿的数量 c 99. 岛屿数量 #include <iostream> #include <vector> #include <queue>using namespace std;struct MGraph {int numVertices, numEdges;vector<vector<int>> Edge; };int dir[4][2] {{1, 0}, {0, 1}, {-1, 0}, {0, -1}…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
