Oracle迁移PostgreSQL问题梳理

公众号:WarmSmile

前言

由于公司最近接手一个数据治理的项目,需要从原有的Oracle数据库迁移到PostgreSQL数据库

主要复杂的修改在于视图函数储存过程、以及项目工程中的Mapper文件

所以整理了下迁移过程中遇到的问题,以便后续可以借鉴一下。

工具迁移

如果项目中使用的视图函数储存过程、以及项目工程中的Mapper文件不怎么复杂。

可以使用开源的工具ora2pg

手动迁移

  • Oracle和PostgreSQL对比
    类型OraclePostgreSQL
    函数sysdate、systimestampcurrent_date、current_time、current_timestamp、now
    sys_guid有类似sys_guid的函数uuid_generate_v4,但需要安装,create extension “uuid-oosp”.
    nvlcoalesce
    rownumrow_number() over()
    WORKER_NODE_ID_SEQ.NEXTVALNEXTVAL(‘WORKER_NODE_ID_SEQ’)
    to_dateto_timestamp
    DATE_FORMATTO_CHAR
    REGEXP_SUBSTRregexp_replace
    DECODE(case when 字段 = 0 then 结果1 else 结果2 end)
    list_aggstring_agg
    SYS_CONNECT_BY_PATHconcat_ws
    语法SELECT … START WITH 条件1 CONNECT BY PRIOR 条件2WITH RECURSIVE TEMP AS ( SELECT … where 条件1 UNION ALL SELECT … where 条件2 ) SELECT * FROM TEMP
    ROWNUM = 1LIMIT 1
    “xx”‘xx’ (双引号是字段的意思)
  • 可能会遇到的问题
    问题解决
    Caused by: org.postgresql.util.PSQLException: ERROR: subquery in FROM must have an alias子查询表需要别名
    recursive query “t” column 7 has type character varying(300) in non-recursive term but type character varying overall使用CAST(字段 as 类型) 函数
    START WITH CONNECT BY PRIOR使用WITH RECURSIVE
    需要显示类型转换的使用cast函数或者 字段::类型

总结

刚开始进行迁移会有难入手,很多语法都不懂,而且业务sql代码量比较多,有些sql差不多几百行。

但是慢慢入手了就会改的很快,主要是了解sql做什么用花费的时间较长。

具体看自己的项目里面的需要,可能我这里也不怎么齐全。

Past is the past. Today is a new day.
过去的已经过去了,今天是崭新的一天。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值