java项目mysql转postgresql

news/2024/7/9 22:42:54 标签: java, mysql, postgresql

特殊函数 :
mysql

        find_in_set(?, ancestors)

postgresql

        ? = ANY (string_to_array(ancestors,','))

mysql

        date_format(t1.oper_time, '%Y-%m-%d')

postgresql

        rksj::date

        to_char(inDate,'YYYY-MM-DD')

mysql

        concat(t1.id, ifnull(t1.perms, ''))

postgresql

        concat(t1.id, COALESCE(t1.perms,''))

JDBC链接

按顺序访问public、sys、xxx数据库的表,表名不能重复,无需加前缀;

jdbc_url=jdbc:postgresql://127.127.0.1:5432/dbname?currentSchema=public,sys,xxx

仅访问sys库,若系统里面还需要访问xxx数据库,那么必须加前缀加个点 “xxx.”;

jdbc_url=jdbc:postgresql://127.127.0.1:5432/dbname?currentSchema=sys

最后,mysql支持自动类型转换,postgresql是强类型数据库,特别注意数字与字符串在写SQL时候的区分;字符串必须带单引号!

注意,postgresql查询结果集的字段名称,只支持小写!可能会导致设置JavaBean不起作用!



1、使用navicat工具把mysql的数据库复制一份到postgresql中对应的数据库中

2、修改application-druid.yml的相应的参数
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/xx_xxx
validationQuery: SELECT 1

3、修改postgresql数据中qrtz_job_details表中varchar 1为varchar 10,否则运行会提示:对于可变字符类型来说,值太长了(1)

4、在ScheduleConfig中添加prop.put(“org.quartz.jobStore.driverDelegateClass”, “org.quartz.impl.jdbcjobstore.PostgreSQLDelegate”);

5、全局替换项目中使用的sysdate()函数为now(),因为postgresql数据库没有sysdate()函数


6、全局替换项目中使用的ifnull()函数为coalesce(),因为postgresql数据库没有ifnull()函数。注意只替换ifnull为coalesce,不带括号。


7、修改部门查询SQL中使用到的find_in_set函数,把 find_in_set(#{deptId}, ancestors) 替换cast(#{deptId} as varchar) = any(string_to_array(ancestors,','))

8、处理数据库中表的自增问题,mysql数据库支持直接对主键自增,postgresql数据库可更改MySQL主键自增auto_increment为PGSql的序列类型BIGSERIAL

也可通过建立序列的方式来实现对主键的自增,所以需要对所有主键自增的表进行序列创建和关联。完整可执行SQL

--创建用户表ID自增序列
create sequence public.sys_user_id_seq
increment 1
start 200
minvalue 1
maxvalue 99999999
cache 1;

--把序列和用户表ID关联上
alter table public.sys_user alter column user_id set default nextval('public.sys_user_id_seq');

9、修改Mapper中 status = 0 为 status = ‘0’

10、修改数据库中的默认值
如:sys_user中的user_type、sex、status、del_flag的默认值

11.sys_menu 表中的两个属性类型int4改为varchar
12.


http://www.niftyadmin.cn/n/4983418.html

相关文章

CSS :has伪类

一、什么是has 有时候我们会遇到一些场景,比如样式涉及到父子父子组件:我们使用了element-ui的Tree 树形控件,但是我们不希望使用其自带的样式,比如父级不希望有选中样式之类,中国社会科学院就可以用has。 :has伪类的…

基于Java+SpringBoot+Vue前后端分离中国陕西民俗网设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

分布式系统的多数据库,实现分布式事务回滚(1.7.0 seata整合2.0.4nacos)

正文 1、解决的应用场景是分布式事务,每个服务有独立的数据库。 2、例如:A服务的数据库是A1,B服务的数据库是B2,A服务通过feign接口调用B服务,B涉及提交数据到B2,业务是在B提交数据之后,在A服…

C++(16):模板与泛型编程

面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。 不同之处在于:OOP 能处理类型在程序运行之前都未知的情况;而在泛型编程中,在编译时就能获知类型了。 模板是C中泛型编程的基础。一个模板就是一个…

数学建模:CRITIC赋权法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 CRITIC赋权法 算法流程 构建原始数据矩阵 X X X,他是一个 m ∗ n m * n m∗n 的矩阵, m m m 表示评价对象个数, n n n 表示指标个数对原始数据矩阵进行正向化处理计算…

移植使用tslib 库

目录 tslib 简介tslib 移植下载tslib 源码编译tslib 源码tslib 安装目录下的文件夹介绍在开发板上测试tslib tslib 库函数介绍打开触摸屏设备配置触摸屏设备读取触摸屏数据 基于tslib 编写触摸屏应用程序单点触摸应用程序多点触摸应用程序 上一章我们学习了如何编写触摸屏应用程…

ddd 领域事件 springboot 代码案例

以下是一个使用Spring Boot实现DDD领域事件的案例: 1. 首先,创建一个领域事件类OrderCreatedEvent: java public class OrderCreatedEvent { private Order order; public OrderCreatedEvent(Order order) { this.order order…

kafka调优配置

Kafka生产者核心参数配置 来源于尚硅谷 参数名称描述bootstrap.servers生产者连接集群所需的broker地址清单。例如hadoop102:9092,hadoop103:9092,hadoop104:9092,可以设置1个或者多个,中间用逗号隔开。注意这里并非需要所有的broker地址,因…