zoukankan      html  css  js  c++  java
  • (转)PostgreSQL 兼容Oracle

    转自:http://blog.163.com/digoal@126/blog/static/1638770402015112144250486/

    PostgreSQL是和Oracle最接近的企业数据库,包括数据类型,功能,架构和语法等几个方面。甚至大多数的日常应用的性能也不会输给Oracle。 但是Oracle有些函数或者包,默认PostgreSQL是没有的,需要安装orafce包来实现这些兼容性。 例如现在orafce已经包含了如下内容。
    1. 类型 date, varchar2 and nvarchar2 2. 函数 concat, nvl, nvl2, lnnvl, decode, bitand, nanvl, sinh, cosh, tanh and oracle.substr 3. dual 表 4. package : dbms_output utl_file dbms_pipe dbms_alert PLVdate PLVstr and PLVchr PLVsubst DBMS_utility PLVlex DBMS_ASSERT PLUnit DBMS_random orafce的安装步骤如下: http://pgxn.org/dist/orafce/ 下载最新版本。 wget http://api.pgxn.org/dist/orafce/3.1.2/orafce-3.1.2.zip 安装 unzip orafce-3.1.2.zip mv orafce-3.1.2 /opt/soft_bak/postgresql-9.4.5/contrib cd /opt/soft_bak/postgresql-9.4.5/contrib/orafce-3.1.2 把pg_config命令放到当前路径,之后就可以编译安装。 export PATH=/opt/pgsql/bin:$PATH make clean make make install 创建extension 。 su - postgres psql postgres=# create extension orafce; CREATE EXTENSION Oracle兼容 函数列表: postgres=# df List of functions Schema | Name | Result data type | Argument data types | Type --------+---------------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------- public | bitand | bigint | bigint, bigint | normal public | cosh | double precision | double precision | normal public | decode | bigint | anyelement, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, anyelement, bigint, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, bigint | normal public | decode | character | anyelement, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, anyelement, character, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, character | normal public | decode | character | anyelement, anyelement, character, character | normal public | decode | date | anyelement, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, anyelement, date, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, date | normal public | decode | date | anyelement, anyelement, date, date | normal public | decode | integer | anyelement, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, anyelement, integer, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, integer | normal public | decode | integer | anyelement, anyelement, integer, integer | normal public | decode | numeric | anyelement, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, anyelement, numeric, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, numeric | normal public | decode | text | anyelement, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, anyelement, text, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, text | normal public | decode | text | anyelement, anyelement, text, text | normal public | decode | time without time zone | anyelement, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, anyelement, time without time zone, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, time without time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, anyelement, timestamp without time zone, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, timestamp without time zone | normal public | dump | character varying | "any" | normal public | dump | character varying | "any", integer | normal public | dump | character varying | text | normal public | dump | character varying | text, integer | normal public | nanvl | double precision | double precision, character varying | normal public | nanvl | double precision | double precision, double precision | normal public | nanvl | numeric | numeric, character varying | normal public | nanvl | numeric | numeric, numeric | normal public | nanvl | real | real, character varying | normal public | nanvl | real | real, real | normal public | nvarchar2 | nvarchar2 | nvarchar2, integer, boolean | normal public | nvarchar2_transform | internal | internal | normal public | nvarchar2in | nvarchar2 | cstring, oid, integer | normal public | nvarchar2out | cstring | nvarchar2 | normal public | nvarchar2recv | nvarchar2 | internal, oid, integer | normal public | nvarchar2send | bytea | nvarchar2 | normal public | nvarchar2typmodin | integer | cstring[] | normal public | nvarchar2typmodout | cstring | integer | normal public | nvl | anyelement | anyelement, anyelement | normal public | nvl2 | anyelement | anyelement, anyelement, anyelement | normal public | sinh | double precision | double precision | normal public | tanh | double precision | double precision | normal public | to_multi_byte | text | str text | normal public | to_single_byte | text | str text | normal public | varchar2 | varchar2 | varchar2, integer, boolean | normal public | varchar2_transform | internal | internal | normal public | varchar2in | varchar2 | cstring, oid, integer | normal public | varchar2out | cstring | varchar2 | normal public | varchar2recv | varchar2 | internal, oid, integer | normal public | varchar2send | bytea | varchar2 | normal public | varchar2typmodin | integer | cstring[] | normal public | varchar2typmodout | cstring | integer | normal (88 rows) Oracle兼容 dual表,在PG里用了一个视图来实现。 postgres=# dv List of relations Schema | Name | Type | Owner --------+------+------+---------- public | dual | view | postgres (1 row) postgres=# d+ dual View "public.dual" Column | Type | Modifiers | Storage | Description --------+-------------------+-----------+----------+------------- dummy | character varying | | extended | View definition: SELECT 'X'::character varying AS dummy; postgres=# select * from dual; dummy ------- X (1 row) postgres=# select 1 from dual; ?column? ---------- 1 (1 row) Oracle兼容 包列表: 在PostgreSQL里用schema+函数来实现。 postgres=# dn List of schemas Name | Owner --------------+---------- dbms_alert | postgres dbms_assert | postgres dbms_output | postgres dbms_pipe | postgres dbms_random | postgres dbms_utility | postgres madlib | postgres oracle | postgres plunit | postgres plvchr | postgres plvdate | postgres plvlex | postgres plvstr | postgres plvsubst | postgres public | postgres utl_file | postgres (16 rows) 例如dbms_alert包: postgres=# df dbms_alert.* List of functions Schema | Name | Result data type | Argument data types | Type ------------+----------------+------------------+-------------------------------------------------------------------------------+--------- dbms_alert | _signal | void | name text, message text | normal dbms_alert | defered_signal | trigger | | trigger dbms_alert | register | void | name text | normal dbms_alert | remove | void | name text | normal dbms_alert | removeall | void | | normal dbms_alert | set_defaults | void | sensitivity double precision | normal dbms_alert | signal | void | _event text, _message text | normal dbms_alert | waitany | record | OUT name text, OUT message text, OUT status integer, timeout double precision | normal dbms_alert | waitone | record | name text, OUT message text, OUT status integer, timeout double precision | normal (9 rows)
  • 相关阅读:
    iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)
    iOS中 学会如何对sqlite3 进行封装
    杭电ACM2012素数判定
    杭电ACM2503a/b+c/d
    杭电ACM2005第几天
    杭电ACM2034人见人爱AB
    杭电ACM2502月之数
    杭电ACM2001计算两点间的距离
    杭电ACM2002计算求得体积
    杭电ACM2033人见人爱A+B
  • 原文地址:https://www.cnblogs.com/space-place/p/5378930.html
Copyright © 2011-2022 走看看