Oracle與Greenplum數據類型映射表

最近有個需求,要將Oracle中一些表遷移到Greenplum中,其中涉及到數據類型的轉換,在網上沒找到映射表,特查閱資料找到此映射表,並分享出來,來源於《Greenplum從大數據戰略到實現》一書。

Oracle與Greenplum不同數據類型的轉換方式,如下:

Oracle

Greenplum

說明

VARCHAR2(n)

VARCHAR(n)

在Oracle中n代表位元組數,在Greenplum中n代表字符數

CHAR(n)

CHAR(n)

在Oracle中n代表位元組數,在Greenplum中n代表字符數

NUMBER(n,m)

NUMERIC(n,m)

number可以轉換成numeric,但真實業務中數值類型可以用smalllint、int或bigint等代替,性能會有較大提升

NUMBER(4)

SMALLLINT

NUMBER(9)

INT

NUMBER(18)

BIGINT

NUMBER(n)

NUMERIC(n)

如果n>19,則可以轉換成numeric類型

DATE

TIMESTAMP(0)

Oracle和Greenplum都有日期類型,但Oracle的日期類型會同時保存日期和時間,而Greenplum只保存日期

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMPTZ

注意:Greenplum中的TIMESTAMPTZ不等同於Oracle中的TIMESTAMP WITH TIME ZONE

CLOB

TEXT

Greenplum中TEXT類型不能超過1GB

BLOBRAW(n)

BYTEA(1 GB limit) Large object

在Oracle中BLOB用於存放非結構化的二進制數據類型,最大可存儲128TB;而Greenplum中BYTEA類型最大可以存儲1GB,如果有更大的存儲要求,可以使用Large Object類型

因greenplum集成了postgreSQL,兩者有很多相似之處。若在網上找不到greenplum的資料,建議可以查postgreSQL的相關信息,作為參照。