最近有个需求,要将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的相关信息,作为参照。