项目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/ry_vue
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数据库只能通过建立序列的方式来实现对主键的自增,所以需要对所有主键自增的表进行序列创建和关联。完整可执行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,如下图

 

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PostgreSQLMySQL 是两种流行的关系型数据库管理系统(RDBMS),它们都可以用来存储和管理数据。但是它们在某些方面有所不同: - 开源性:PostgreSQL 是完全开源免费的软件,而 MySQL 是受 Oracle 公司管理的开源软件,在某些情况下需要付费。 - 数据类型:PostgreSQL 支持更多的数据类型,如数组,Hstore,JSON 等,而 MySQL 的支持较少。 - 事务:PostgreSQL 支持严格的 ACID 事务,而 MySQL 支持较弱的事务。 - 存储过程:PostgreSQL 支持编程语言(如 PL/pgSQL, PL/Tcl, PL/Perl)作为存储过程,而 MySQL 仅支持 SQL 作为存储过程。 - 数据完整性和约束:PostgreSQL 支持严格的数据完整性和约束,而 MySQL 支持较弱的约束。 - 性能: MySQL 被认为在读写小数据量时会更快一点,而在读写大数据量时,PostgreSQL 更具优势。 总之,PostgreSQLMySQL 都是功能强大的数据库管理系统,但它们适用于不同的场景。如果需要处理大量的数据,支持严格的事务和数据完整性,那么 PostgreSQL 更适合;如果需要高PostgreSQLMySQL 是两种常用的关系型数据库管理系统。它们之间有一些显著的差异: - PostgreSQL 支持更为丰富的数据类型,如数组、hstore 和 JSON。同时也支持触发器和存储过程。 - MySQL 更为简单易用,性能更高。MySQL 在网站和 web 应用方面有着广泛的应用。 - PostgreSQL 主要用于数据分析、企业资源管理等需要高可靠性、高可扩展性和复杂查询的应用。 - MySQL 在社区版本和企业版本之间有一些差异,MySQL 社区版本是开源的,而 MySQL 企业版本是收费的,并提供更高级的性能和管理功能。 总体来说,PostgreSQL 更适合大型复杂项目MySQL 更适合小型简单项目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值