Oracle数据库迁移PostgretSQL

Oracle → PostgreSQL库迁移

常用数据类型及函数替换

Oracle → Pg

1.常见类型及函数区别

字符串 varchar2,varchar → varchar

数据类型 number → numeric

NVL函数 nvl → coalesce

Instr函数 instr → strpos

外连接 (+) → left join

当前时间 sysdate → now

虚表 dual → 不需要

行转列 wm_contact → string_agg

Decode函数 decode → case when then else end

筛选行数 rownum → limit

类型转换 to_char,to_number → ::varchar,::numeric

2功能函数区别
1、层级查询
oracle中使用start with connect by,pg中使用with recursive实现
数据如下Oracle数据库迁移PostgretSQL
oracle版本
Oracle数据库迁移PostgretSQL
这里会发现层级查找的时,假如有个人员既是这个地方的管理又是那个地方的管理
层级查询就会出现重复,这里可以用distinct或者聚合函数的方式处理
pg版本Oracle数据库迁移PostgretSQL
2、日期类型
查询本月初到当前的数据
Oracle版
Oracle数据库迁移PostgretSQL
pg版本
Oracle数据库迁移PostgretSQL
3、merge into
oracle中
Oracle数据库迁移PostgretSQL
Oracle数据库迁移PostgretSQL
Oracle数据库迁移PostgretSQL
pg库
Oracle数据库迁移PostgretSQL
3.存储过程
1.在迁移过程中发现与Oracle相比,postgreSQL中对语句块的支持似乎很鸡肋,建议直接转换成function。
2.在postgreSQL中不在区分function和procedure 统一使用function
3.在postgreSQL中不在支持上下文