国产数据库适配-南大通用(Gbase)问题整理

2023-12-14 12:25:48

Gbase 函数

[GBase 8s 教程]GBase 8s 常用函数、表达式_gbase函数-CSDN博客

Gbase 8s hibernate方言包下载:

Index of /dl/hibernate

select * from sysmaster:sysdbslocale

  • 导出数据

su - gbasedbt

export DB_LOCALE=zh_CN.57372

export CLIENT_LOCALE=zh_cn.utf8

执行下面这条命令会把ta的库导出到当前目录下的ta.exp文件夹中,其中表结构和表数据是分开存储的。

dbexport ta;

  • 导入数据:

dbimport ta -d datadbs1 -l buffered

启动数据库服务:

oninit -vy

关闭数据库服务:

onmode -ky

查看数据库版本和运行模式:

onstat -

Springboot工程 适配南大通用(gbase 8s)

引入驱动包和方言包

hibernate-5.3.20_dbt-2.0_v1.0.jar gbasedbtjdbc.jar

 driver-class-name: com.gbasedbt.jdbc.IfxDriver
  url: jdbc:gbasedbt-sqli://10.7.215.249:9088/sysmaster:GBASEDBTSERVER=gbaseserver;db_locale=zh_cn.utf8;client_locale=zh_cn.utf8;NEWCODESET=utf8,utf8,57372
  username: gbasedbt
  password: gbasedbt123
  dialect: org.hibernate.dialect.GBasedbtDialect

问题整理:

使用了Mybatis-plus的分页插件时,需要手动设置方言类型为POSTGRE_SQL
PaginationInterceptor pageHelper=new PaginationInterceptor();
pageHelper.setDialectType(DbType.POSTGRE_SQL.getDb());

  • 创建自增id语句 (SERIAL 类型表示自增)
CREATE TABLE ctl_perf_auth_info (
	id  SERIAL NOT NULL,
	create_time DATETIME YEAR TO FRACTION(5),
	remark TEXT,
	PRIMARY KEY (id) CONSTRAINT u564_1587
)
 in datadbs1 ;
  • 主键自增报错:

把表的主键自增类型设置为SERIAL

  • 在SELECT?列表中所有未包含在组函数中的列都应该包含在GROUP BY?子句中.
  • order by 后 面的字段必须出现在select 列中。
  • 不支持IF函数,需要换成下面的写法

示例:

select
					dvc_address as dvcAddress,
					dvc_name as dvcName,
						case when
						alarm_level = 1
						then SEND_TIMES
						else 0 end
					 as low,
						case when
						alarm_level = 2
						then SEND_TIMES
						else 0 end
					 as  middle,
						case when
						alarm_level = 3
						then SEND_TIMES
						else 0 end
					 as  high
				from sim_d_alarm
  • 创建序列
CREATE SEQUENCE sim_sequence 
 INCREMENT BY 1 START WITH 1 
 MAXVALUE 99999999 MINVALUE 0 
 NOCYCLE CACHE 10 ORDER; 
  • TEXT 类型的字段在数据库里无法进行比较和聚合,需要改成varchar类型
  • 不支持date_format函数,需要替换成TO_CHAR
  • concat函数只支持两个参数
  • 查询语句中的字段和表名不能使用`符号
  • group_concat函数需要替换成wm_concat()
  • boolean类型的值,不是0和1,而是 t、f,分别代表true和false,不区分大小写

例如:data_flag 的字段类型为布尔,这查询语法如下

select * from lateral_threat_main _main where _main.data_flag = 'T'
  • 不支持now()函数,需要替换成下面的写法
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual
  • 不支持LOCATE(substr,str) 函数,需要用INSTR(str,substr)代替,注意参数是反过来的
  • 大小写问题,如果设置了大小写不敏感属性,则查询语句中返回的列名全部为小写。如图所示:
  • mybatis代码分页的写法,参数需要用$符号,不能用#号

select * from t_user where 1 = 1 limit ${pageNum},${pageSize}

关键字:

user、enable、label、type...

文章来源:https://blog.csdn.net/EverythingAtOnce/article/details/134980813
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。