Oracle 转化成Postgre主要注意的点

  1. 标示符(Identifiers)

    Oracle 转化标示符为大写字母,除了引号

    Postgre 转化标示符为小写字母,除了引号

    Oracle:

SELECT COUNT (*) FROM user_tables WHERE table_name=UPPER (tableName);

Postgre:

SELECT COUNT (*) FROM pg_tables WHERE tablename =LOWER (tableName);

  1. 数据类型转化。(如下表一)

表一数据库Oracle与 Postgre之间数据类型的转化

  1. 对于序列的访问

    说明:user_id_seq代表已创建的序列,以便下边举例应用。

    Oracle:序列名.nextval、序列名.currval。

    1. 如:user_id_seq.nextvaluser_id_seq.currval

    Postgre:nextval(‘序列名’)、currval(‘序列名’)。

    1. 如:nextval(‘user_id_seq’)、currval(‘user_id_seq’)

    取到相应的序列值:

    Oracle: select 序列名.nextval/序列名.currval from dual;

    1. 如:select user_id_seq.nextval from dual;

    Postgre: select nextval(‘序列名’)/currval(‘序列名’);

    1. 如:select nextval(‘序列号’);
  1. 用于递归的sql语句

    Oracle: startwith…connect by prior…

    Postgre:with recursive…

  1. 编写函数或存储过程中出现的逻辑代码转化 (Oracle —> Postgre)

    a.return 变成 returns

    b.execute immediate 变成 execute

    c.Oracle中的存储过程、函数变成 Postgres中的函数

  1. 其他的替换(Oracle —> Postgre)

    a.sysdate —->NOW()

b. nvl(expression1, expression2) —->coalesce(expression1, expression2)

其他替换说明

  1. 说明:sdOracle数据库中创建的一个用户,方便下边举例。
  2. 1. sql语句中涉及如“用户名.表名”形式的全部把“用户名.”去掉。
  3. 如:sd.table_name(oracle数据库)修改为 table_name(postgres数据库)
  1. postgre数据库中存在的表中未填写如character或varchar等类型属性的内容。若通过sql语句读取时,取到的不是空字符串“”,而是null

原文:https://blog.csdn.net/u011480030/article/details/12789645

0 评论  
添加一条新评论