1 背景
目前,国内掀起一股去IOE的浪潮,其中大部分厂商采用开源的Postgresql数据库作为Oracle数据库的替代品,但是具体用Postgresql替换Oracle数据库的过程,碰到各种问题,特别在老旧应用系统Oracle数据库替换成Postgresql后,原Oracle数据库数据(Oracle语法及其复杂)和脚本向Postgresql转化成为了前进的拦路虎,让很多人望而却步,可喜的是,现在有一款国人自产的数据库脚本转化利器(恒辉通用桌面管理工具)能够自适应完成Oracle脚本向Postgresql数据库脚本的转化。
HHDBCS数据库管理工具是一款纯国产数据库管理工具,可管理所有常见关系型数据库(Oracle/Mysql/HHDB/Postgresql/达梦等);通过所有国产化软件硬件兼容性认证,可在所有平台上运行。体验请移步:
去https://www.deskui.com (HHDBCS社区),下载最新版本
去https://www.deskui.com (HHDBCS社区),下载Linux下的JDK
把下载的jdk解压到,HHDBCS解压后的jdk目录
把HHDBCS解压后的start_csadmin.sh改为可运行, chmod +x start_csadmin.sh
直接运行start_csadmin.sh
2 转化过程
Oracle脚本:
SELECT
1 as con_1, '2' as
con_2,tt.emp_id,lead_id,emp_name,salary,level,to_char
(salary,'999')
FROM
emp tt
WHERE
level>1 START WITH lead_id = 0 connect BY prior
tt.emp_id = lead_id
转化的Postgresql脚本:
WITH RECURSIVE Tab_HH__9 AS (
SELECT tt.emp_id,lead_id,emp_name,salary,1 AS level ,to_char(salary::numeric,'999') AS alias_HH__18 FROM EMP tt WHERE lead_id::numeric=0
UNION ALL SELECT Tab_HH__10.emp_id,Tab_HH__10.lead_id,Tab_HH__10.emp_name,Tab_HH__10.salary,Tab_HH__9.level + 1 AS level ,Tab_HH__10.alias_HH__18 FROM (
SELECT tt.emp_id,lead_id,emp_name,salary,to_char(salary::numeric,'999') AS alias_HH__18 FROM EMP tt) Tab_HH__10
INNER JOIN Tab_HH__9 ON Tab_HH__9.emp_id=Tab_HH__10.lead_id)
SELECT 1 AS con_1 ,'2' AS con_2 ,emp_id,lead_id,emp_name,salary,level,alias_HH__18 FROM Tab_HH__9 WHERE level>1 ;