Ticket #88 (new defect) — at Version 17

Opened 14 years ago

Last modified 14 years ago

商城数据库从oracle转postgresql

Reported by: huangzhong Owned by:
Priority: major Milestone: 2012年6.0版本
Component: 系统相关 Version: 6.0
Keywords: 数据库迁移;postgresql Cc:
Due Date: 31/05/2012

Description (last modified by lisiliang) (diff)

一、目标
在商城应用架构不变的基础上把数据库从oracle转到pg

二、任务
1.修改应用代码使之能在pg数据库上正常运行(代码中使用到的oracle特有的功能要去掉)
2.商城所依赖的产品库数据的同步
3.产品库所依赖的商城数据的同步
4.存储过程、方法、定时任务等改造

三、计划

四、转pG问题

 http://rdtrac.pc.com.cn/itm/ticket/89

openjpa like 模糊搜索的问题 的转义字符问题
 http://bbs.pconline.cn/topic-2071.html

五、oracle语法和pg语法区别
 http://rdtrac.pc.com.cn/itm/attachment/ticket/88/PG%20vs%20ORACLE.doc
修改代码的工作量
trunc 8
rownum 93
Alias 137
(+) 109 针对复杂sql 的out join 写法 转pg的示例  http://bbs.pconline.cn/topic-2093.html
sysdate 42
DECODE 61
nvl 65
Connect by 16
like 92

总数为623

Change History

comment:1 Changed 14 years ago by huangzhong

  • Version set to 6.0

comment:2 Changed 14 years ago by huangzhong

  • Keywords 数据库迁移;postgresql added; postgresql removed

comment:3 Changed 14 years ago by huangzhong

  • Component changed from 商家后台 to 系统相关

comment:4 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:5 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:6 Changed 14 years ago by huangzhong

  • Description modified (diff)

Changed 14 years ago by huangzhong

comment:7 Changed 14 years ago by huangzhong

  • Description modified (diff)

comment:8 Changed 14 years ago by huangzhong

  • Description modified (diff)

comment:9 Changed 14 years ago by huangzhong

  • Description modified (diff)

comment:10 Changed 14 years ago by lisiliang

1.oracle 的函数索引,需要检查,部分在pg 不支持

例如 (trunc(create_time)) ,trunc 函数需要处理。

2.字符编码问题 :

部分gbk了里的乱码,没有对应utf8编码,无法转入,需要人工干预。 ( 目前已经解决)

  1. pg 里没有rollback 语句,不会自动rollback ,需要应用里触发异常。

5.rownum -----> limit m,n

6.子查询需要定义别名 alias

  1. 表的连接方式 需要注意 : 外联接 需要采用 left out join 而不是 oracle 里的 a.id=b.id(+) 这种方式。

8.关于oracle 里树形目录 connect by , pg 没有该语法,可以考虑用递归的方式实现:
例如:

WITH RECURSIVE source (part_no) AS (
SELECT 2
UNION ALL
SELECT part.part_no
FROM source JOIN part ON (source.part_no = part.parent_part_no)
)
SELECT * FROM source;

comment:11 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:12 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:13 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:14 Changed 14 years ago by lisiliang

  • Description modified (diff)

comment:15 Changed 14 years ago by huangzhong

在对数据进行分页时,我们经常需要在sql语句中使用limit。

在msyql中,limit使用如下
select *from mytable limit a,b
a为起始值,从0开始,b为获取数据长度

在postgresql中,limit使用如下
select *from mytable limit a offset b
b为起始值,a为获取数据长度

comment:16 Changed 14 years ago by huangzhong

  • Description modified (diff)

comment:17 Changed 14 years ago by lisiliang

  • Description modified (diff)
Note: See TracTickets for help on using tickets.