Ticket #89 (closed defect: fixed)
cyp转PG 遇到的问题,以及解决方案
| Reported by: | lisiliang | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | 商家后台 | Version: | 6.0 |
| Keywords: | 数据库迁移 | Cc: | |
| Due Date: | 14/03/2012 |
Description
[postgres@test740-10 ora2cyp]$ cat export.log |grep ERROR
psql:ENT_COMPANY_WEB.sql:142: ERROR: value too long for type character varying(720)
psql:ENT_NEWS_WEB.sql:19: ERROR: value too long for type character varying(500)
数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。
psql:ENT_QQ_CONTACT.sql:21: ERROR: bigint out of range
其中的qq 号明显有问题,修改字段类型,重新导入,建议开发对输入做限制。
psql:ENT_QUESTION.sql:1125: ERROR: value too long for type character varying(2000)
ENT_REQUEST_ERROR.sql Tue Mar 13 21:19:13 CST 2012
psql:ENT_REQUEST_ERROR.sql:43: ERROR: value too long for type character varying(4000)
psql:ENT_SYSLOG.sql:72: ERROR: value too long for type character varying(500)
数据长度不对,有可能跟转为utf8 字符集,长度增加有关系,奇怪的是其他表不需要。
psql:TMP_A.sql:1: ERROR: syntax error at or near "("
tmp_a 是临时表跟业务无关,直接删除。
Change History
comment:3 Changed 14 years ago by lisiliang
1.oracle 的函数索引,需要检查,部分在pg 不支持
例如 (trunc(create_time)) ,trunc 函数需要处理。
2.字符编码问题 :
部分gbk了里的乱码,没有对应utf8编码,无法转入,需要人工干预。 ( 目前已经解决)
- pg 里没有rollback 语句,不会自动rollback ,需要应用里触发异常。
5.rownum -----> limit m,n
6.子查询需要定义别名 alias
- 表的连接方式 需要注意 : 外联接 需要采用 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;
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/global/2008/images/jss/m_logo091125.jpg)