国产数据库适配-人大金仓(kingbase V8R3)
金仓数据库是基于POSTGRE_SQL
参考资料
国产数据库人大金仓踩坑记录和函数适配_金仓数据库关系不存在-CSDN博客
Springboot工程 适配人大金仓 kingbase V8R3
引入驱动包和方言包
hibernate-5.2.17.Finaldialect.jar
kingbase8-8.2.0.jar
application.yml文件
driver-class-name: com.kingbase8.Driver
url: jdbc:kingbase8://10.7.215.249:54321/ta
username: root
password: e022f87539fd81f3
dialect: org.hibernate.dialect.Kingbase8Dialect
如果项目中使用了mybatis分页插件,需要加以下配置类,负责工程无法启动
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig {/*** 分页插件*/@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor pageHelper=new PaginationInterceptor();/***分页插件会根据配置的数据库连接地址获取对应的方言,但不支持kingbase,kingbase的需要设置成 MYSQL*/pageHelper.setDialectType(DbType.POSTGRE_SQL.getDb());return pageHelper;}}
遇到的问题:
1.KingbaseV8R6无法设置大小写敏感,查询时,表名或字段名不能用“`”符号,表字段名或别名需要用双引号括起来,否则全部会转为小写,sql语句中的出现的字符串需要用单引号标识。影响范围较大
故采用低版本的V8R3,查询使用别名时,最好遵循 字段 as 别名 这种写法。
2.mysql的group_concat函数需要替换成string_agg(字段名,分隔符),写法如下
SELECTstring_agg(t.resource_id,',')FROMsim_group t
3. 使用group by时 查询的字段和order by的字段都必须出现在group by后面。解决方案:
在kingbase的安装目录下KingbaseV8R3/data找到kingbase.conf文件
加入下面一行配置,重启数据库
exclude_reserved_words='owner' // 屏蔽关键字 多个用逗号隔开
sql_mode='' // 兼容mysql group by命令
4. mysql中 一列拆成多行
SELECTsubstring_index(substring_index( a.rn,',',b.help_topic_id + 1 ),',' ,- 1) AS rn
FROM(select '1,2,3,4' as rn) a
JOIN mysql.help_topic b ON b.help_topic_id <
(length(a.rn) - length( replace(a.rn, ',', '') ) + 1)
kingbase中的写法:
select regexp_split_to_table('a,b,c,d,e,f',',') as rn;
5. timestampdiff函数需要自己创建, 其中第一个参数为text类型,函数创建语句如下
create or replace function timestampdiff(para1 text,para2 timestamp,para3 timestamp) return bigint
as
declarediff interval day to second;diffs bigint;diffm bigint;diffh bigint;diffd bigint;nyy bigint; ny bigint;nm bigint;
begindiff:=para3-para2;diffs:=extract(second from diff);diffm:=extract(minute from diff);diffh:=extract(hour from diff);diffd:=extract(day from diff);ny:=extract(year from age(para3,para2));nm:=extract(month from age(para3,para2));nyy:=extract(year from para3)-extract(year from para2);if para1='second' thenreturn ((diffd*24+diffh)*60+diffm)*60+diffs;elseif para1='minute' thenreturn (diffd*24+diffh)*60+diffm;elseif para1='hour' thenreturn diffd*24+diffh;elseif para1='day' then return diffd;elseif para1='month' thenreturn ny*12+nm;elseif para1='year' then return nyy;else raise warning 'para1 not support "%"!',para1;return null;end if;
end;
用法示例:
SELECTip,safe_state safeState,update_state_date updateStateDateFROMasset_searchWHEREupdated = falseAND TimeStampDiff( 'hour', update_state_date, now()) > 24
6.获取当前时间的前7天
mysql中:
select date_add(SYSDATE(), interval -7 day)
kingbase中:
select sysdate-7
7. kingbase兼容date_formate函数
CREATE OR REPLACE FUNCTION date_format(indate anyelement, intext text)RETURNS textLANGUAGE plsql
AS
BEGIN
IF upper(inText) = upper('%Y%m%d_%H%i') THEN
return to_char(inDate,'YYYYMMDD_HH24MI');
END IF;
IF upper(inText) = upper('%Y%m%d%H%i%s') THEN
return to_char(inDate,'YYYYMMDDHH24MISS');
END IF;
IF upper(inText) = upper('%Y-%m-%d %H') THEN
return to_char(inDate,'YYYY-MM-DD HH24');
END IF;
IF upper(inText) = upper('%Y-%m-%d') THEN
return to_char(inDate,'YYYY-MM-DD');
END IF;
IF upper(inText) = upper('%Y-%m') THEN
return to_char(inDate,'YYYY-MM');
end if;
IF upper(inText) = upper('%m%d') THEN
return to_char(inDate,'MMDD');
END IF;
return '';
END;
8.创建主键id自增的表,字段类型 SERIAL 表示自增,它会在库里创建一个序列
CREATE TABLE test (id SERIAL NOT NULL ,ip character varying(200 char),alarm_num integer,source_attack_num integer,get_attack_num integer,by_visit_num integer,create_date date,visit_num integer,event_amount integer,PRIMARY KEY ("id")
)
9.使用hibernate查询时,如果是以下写法,则会报错 Can't use query methods that take a query string on a PreparedStatement.
修改方式为:
PreparedStatement st = con.prepareStatement(sql);
ResultSet rs = st.executeQuery()
10.初始化数据时,如果表的主键是自增,则insert语句中不要对id列赋值,否则后续新增数据时,会报错主键冲突,原因是,手动给id赋值没有触发自增id的序列值更新。
解决方法:
把表对应的序列也初始化一下。
SELECT sys_catalog.setval('"PUBLIC"."clxt_compliance_config_id_SEQ"', 2, true);
关键字:
user、enable、label、type...
更多问题请参考金仓数据库知识库:金仓数据库知识库 - 金仓社区
相关文章:

国产数据库适配-人大金仓(kingbase V8R3)
金仓数据库是基于POSTGRE_SQL 参考资料 国产数据库人大金仓踩坑记录和函数适配_金仓数据库关系不存在-CSDN博客 Springboot工程 适配人大金仓 kingbase V8R3 引入驱动包和方言包 hibernate-5.2.17.Finaldialect.jar kingbase8-8.2.0.jar application.yml文件 driver-cla…...

HAAS 哈斯机床 读写刀补数据
哈斯机床不管是串口机床还是网口机床 都提供了Q命令 可以使用Q命令 进行刀具补偿的读取和写入 最多支持200把刀的 读取和写入...

Visual studio+Qt开发环境搭建以及注意事项和打开qt的.pro项目
下载qt-然后安装5.14.2_msvc2017 不知道安装那个就全选5.14.2的父级按钮 https://download.qt.io/archive/qt/5.14/5.14.2/ 安装Visual studio,下载直接下一步就行 配置Visual studio的qt环境 在线安装-重启Visual studio会自动安装 离线安装-关闭Visual studio点击安装 关闭…...

BUUCTF crypto做题记录(4)新手向
目录 一、大帝的密码武器 二、Windows系统密码 三、信息化时代的步伐 四、凯撒?替换?呵呵! 一、大帝的密码武器 下载的文件叫zip,应该是提示文件的后缀名是zip,把名字改成1.zip或者其他也行,主要保证后缀名是zip就…...
【ArcGIS微课1000例】0080:ArcGIS将shp转json(geojson)案例教程
本文以案例的形式,讲述在ArcGIS软件中,将矢量数据转为GeoJSON的方法。 扩展阅读:【GIS风暴】GeoJSON数据格式案例全解 文章目录 一、GeoJson简介二、ArcGIS将矢量数据转为GeoJSON一、GeoJson简介 GeoJSON是一种基于JSON的地理空间数据交换格式,它定义了几种类型JSON对象以…...

阿里云Centos8安装Dockers详细过程
一、卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \do…...
leetcode 二数之和 三数之和 四数之和
leetcode 二数之和 三数之和 四数之和 又到了不想写博客的环节,不想归不想,有些事情还是要做的,今天总结的是多数之和的问题。 二数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target …...

制衣厂生产ERP系统怎么样?制衣厂生产ERP软件哪个好
有很多的制衣厂在订单处理、物料、仓储、销售、仓储、物料编码、车间成本核算、计件工资核算等方面还存在不少改进空间。 而经过多年的发展,现如今制衣行业的竞争比较激烈,如何提升各业务部门协同效率,减少车间物料损耗,简化生产…...

安装 DevEco Studio 后不能用本地 Node.js 打开
安装 DevEco Studio 后第一次打开时,不能用本地 Node.js 打开 答:因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法: 1.修改文件夹名称 2.重新下载 注意:找一…...

AppLink+WMS,实现仓储管理一体化
WMS像全能的库管员,可以在线还原真实仓库,让企业进行科学化、条理化、俯视化的仓库管理。 随着移动互联网和物流行业的快速发展,如何提高仓储管理的效率和准确性成为了企业关注的焦点。在这个背景下,结合AppLink和WMS系统&#x…...

如果是你,你选SOHO还是跟单?
昨天看到有人在讨论外贸跟单和外贸业务,谁的压力更大的问题?她们讨论的这个问题,源于一个年近四十准备二胎的宝妈,她做跟单十来年了,最近失业迷茫中,在纠结是否要SOHO?作为一个在工贸一体工厂做…...
大语言模型--能力
能力 大语言模型 能力从语言模型到任务模型的转化语言建模总结 从语言模型到任务模型的转化 在自然语言处理的世界中,语言模型 p p p是一种对代币序列 x 1 : L x_{1:L} x1:L这样的模型能够用于评估序列,例如 p ( t h e , m o u s e , a t e , t h e ,…...

安装LLaMA-Factory微调chatglm3,修改自我认知
安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练, CUDA_VISIBLE_DEVICES0 python src/train_web.py…...

以太网协议与DNS
以太网协议 以太网协议DNS 以太网协议 以太网用于在计算机和其他网络设备之间传输数据,以太网既包含了数据链路层的内容,也包含了物理层的内容. 以太网数据报: 其中目的IP和源IP不是网络层的目的IP和源IP,而是mac地址.网络层的主要负责是整体的转发过程,数据链路层负责的是局…...

Spring Boot的日志
打印日志 打印日志的步骤: • 在程序中得到日志对象. • 使用日志对象输出要打印的内容 在程序中得到日志对象 在程序中获取日志对象需要使用日志工厂LoggerFactory,代码如下: package com.example.demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public c…...

Cisco Packet Tracer配置命令——交换机篇
交换机VLAN配置 在简单的网络环境中,当交换机配置完端口后,即可直接应用,但若在复杂或规模较大的网络环境中,一般还要进行VLAN的规划,因此在交换机上还需进行 VLAN 的配置。交换机的VLAN配置工作主要有VLAN的建立与删…...
python单例模式
设计模式:单例模式(Singleton Pattern)。单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。 class Singleton:_instance Nonedef __new__(cls):if cls._instance is None:cls._instance super().__new__(cl…...

环境保护:人类生存的最后机会
随着科技的进步和人类文明的不断发展,地球上的自然资源也在以惊人的速度消耗殆尽。人类对于环境的无止境的掠夺,使得我们的地球正面临着前所未有的环境危机。环境污染、全球变暖、大规模灭绝等问题不断困扰着我们,似乎指向了人类生存的最后机…...

头歌-Python 基础
第1关:建模与仿真 1、 建模过程,通常也称为数学优化建模(Mathematical Optimization Modeling),不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果,因此命名为▁▁▁。 填空1答案:决…...

C++数据结构:B树
目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中,常用…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...