Oracle到postgres数据的部分区别

  数据库连接字符串

   见博客文章

 

  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);

 

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

 

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

数据库类型

数据类型

Oracle

方法

Postgre

字符类型

varcharvarchar2nvarcharnvarchar2

等价于

varchar  text

charnchar

charcharacter

clob

text

数字类型

number

numericreal

blobraw

bytea

float

float

long

bigint

 日期类型

date

datetimestamp

 

 3. 对于序列的访问

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

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

           如:user_id_seq.nextvaluser_id_seq.currval

     Postgrenextval(‘序列名’)currval(‘序列名’)

           如:nextval(‘user_id_seq’)currval(‘user_id_seq’)

 取到相应的序列值:

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

           如:select user_id_seq.nextval from dual;

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

           如:select nextval(‘序列号’);

4. 用于递归的sql语句

  Oracle startwith…connect by prior…

  Postgrewith  recursive…

 

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

   a.return 变成 returns

   b.execute immediate 变成 execute

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

 

6. 其他的替换(Oracle --> Postgre)

   a.sysdate --->NOW()

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

 

  其他替换说明

           说明:sdOracle数据库中创建的一个用户,方便下边举例。

        1.  sql语句中涉及如“用户名.表名”形式的全部把“用户名.”去掉。

                     如:sd.table_name(oracle数据库)修改为 table_name(postgres数据库)

 

2.  postgre数据库中存在的表中未填写如character或varchar等类型属性的内容。若通过sql语句读取时,取到的不是空字符串“”,而是null。

你可能感兴趣的:(编程语言)