PolarDB PostgreSQL版(兼容Oracle)为简化从Oracle数据库的迁移过程,在SQL层面支持与Oracle同名的数据类型。这意味着您可以直接使用熟悉的Oracle数据类型,其含义与用法在PolarDB PostgreSQL版(兼容Oracle)中是等价的。下面详细列出了Oracle与PolarDB PostgreSQL版(兼容Oracle)使用类型以及其底层对应的PostgreSQL原生类型之间的映射关系。
数据类型映射表
下表中的映射关系是双向的,即从Oracle到PolarDB PostgreSQL版(兼容Oracle)的映射,与从PolarDB PostgreSQL版(兼容Oracle)到Oracle的反向映射关系一致。
类型分类 | Oracle 数据类型 | PolarDB for Oracle 使用类型 | 底层 PostgreSQL 类型 | 说明 |
字符串类型 | CHAR(n) | CHAR(n) | character | 定长字符串,使用空格填充。 |
VARCHAR(n) | VARCHAR(n) | character varying | 变长字符串,有长度限制。 | |
VARCHAR2(n) | VARCHAR2(n) | character varying | 变长字符串,有长度限制。 | |
NCHAR(n) | NCHAR(n) | character | 定长字符串,使用空格填充。 | |
NCHAR2(n) | NCHAR2(n) | character | 定长字符串,使用空格填充。 | |
LONG | LONG | text | 可变长度的长字符串。 | |
CLOB | CLOB | text | 可变长度的字符大对象,无长度限制。 | |
数字类型 | NUMBER(p,s) | NUMBER(p,s) | numeric | 精确数值,可指定精度。 |
BINARY_FLOAT | BINARY_FLOAT | real | 4字节单精度浮点数,精度为6位十进制。 | |
BINARY_DOUBLE | BINARY_DOUBLE | double precision | 8字节双精度浮点数,精度为15位十进制。 | |
时间类型 | DATE | DATE | date | 日期和时间。 |
TIMESTAMP[(p)] | TIMESTAMP[(p)] | timestamp[(p)] without time zone | 日期和时间,不含时区信息。 | |
TIMESTAMP[(p)] WITH TIME ZONE | TIMESTAMP[(p)] WITH TIME ZONE | timestamp[(p)] with time zone | 日期和时间,包含时区信息。 | |
TIMESTAMP[(p)] WITH LOCAL TIME ZONE | TIMESTAMP[(p)] WITH LOCAL TIME ZONE | timestamp[(p)] with time zone | 日期和时间,包含本地时区信息。 | |
INTERVAL YEAR [(p)] TO MONTH | INTERVAL YEAR [(p)] TO MONTH | interval | 时间间隔。 | |
INTERVAL DAY [(p)] TO SECOND [(s)] | INTERVAL DAY [(p)] TO SECOND [(s)] | interval | 时间间隔。 | |
二进制类型 | RAW | RAW | bytea | 变长二进制串。 |
LONG RAW | LONG RAW | bytea | 变长二进制串。 | |
BLOB | BLOB | bytea | 二进制大对象,用于存储大型二进制数据。 | |
其他类型 | ROWID | ROWID | rowid | 行的物理地址。 |
UROWID | UROWID | urowid | 行的逻辑地址,支持索引组织表。 | |
BFILE | BFILE | bfile | 指向存储在外部文件的二进制数据指针。 |