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

国产数据库适配-人大金仓(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系统密码 三、信息化时代的步伐 四、凯撒&#xff1f;替换&#xff1f;呵呵! 一、大帝的密码武器 下载的文件叫zip&#xff0c;应该是提示文件的后缀名是zip&#xff0c;把名字改成1.zip或者其他也行&#xff0c;主要保证后缀名是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 。如果已安装这些程序&#xff0c;请卸载它们以及相关的依赖项。 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \do…...

leetcode 二数之和 三数之和 四数之和

leetcode 二数之和 三数之和 四数之和 又到了不想写博客的环节&#xff0c;不想归不想&#xff0c;有些事情还是要做的&#xff0c;今天总结的是多数之和的问题。 二数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target …...

制衣厂生产ERP系统怎么样?制衣厂生产ERP软件哪个好

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

安装 DevEco Studio 后不能用本地 Node.js 打开

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

AppLink+WMS,实现仓储管理一体化

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

如果是你,你选SOHO还是跟单?

昨天看到有人在讨论外贸跟单和外贸业务&#xff0c;谁的压力更大的问题&#xff1f;她们讨论的这个问题&#xff0c;源于一个年近四十准备二胎的宝妈&#xff0c;她做跟单十来年了&#xff0c;最近失业迷茫中&#xff0c;在纠结是否要SOHO&#xff1f;作为一个在工贸一体工厂做…...

大语言模型--能力

能力 大语言模型 能力从语言模型到任务模型的转化语言建模总结 从语言模型到任务模型的转化 在自然语言处理的世界中&#xff0c;语言模型 p p p是一种对代币序列 x 1 : L x_{1:L} x1:L​这样的模型能够用于评估序列&#xff0c;例如 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 之后运行 单卡训练&#xff0c; 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配置 在简单的网络环境中&#xff0c;当交换机配置完端口后&#xff0c;即可直接应用&#xff0c;但若在复杂或规模较大的网络环境中&#xff0c;一般还要进行VLAN的规划&#xff0c;因此在交换机上还需进行 VLAN 的配置。交换机的VLAN配置工作主要有VLAN的建立与删…...

python单例模式

设计模式&#xff1a;单例模式&#xff08;Singleton Pattern&#xff09;。单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。 class Singleton:_instance Nonedef __new__(cls):if cls._instance is None:cls._instance super().__new__(cl…...

环境保护:人类生存的最后机会

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

头歌-Python 基础

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

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为在实际软件开发项目中&#xff0c;常用…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...