ODPS数据类型:
类型 |
描述 |
取值范围 |
Bigint |
8字节有符号整型。请不要使用整型的最小值 (-9223372036854775808),这是系统保留值。 |
-9223372036854775807 ~ 9223372036854775807 |
String |
字符串,支持UTF-8编码。其他编码的字符行为未定义。 |
单个String列最长允许8MB。 |
Boolean |
布尔型。 |
True/False |
Double |
8字节双精度浮点数。 |
-1.0 10308 ~ 1.0 10308 |
Datetime |
日期类型。使用东八区时间作为系统标准时间。 |
0001-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
decimal |
decimal类型支持null值,小数点前36位有效数字,小数点后18位有效数字。 |
-999999999999999999999999999999999999.999999999999999999
~ 999999999999999999999999999999999999.999999999999999999 |
oracle与ODPS的数据类型映射表
Data Type |
Description |
ODPS |
转换到ODPS Desc |
VARCHAR2(size [BYTE | CHAR]) |
VARCHAR2(1-4000) |
string |
单个String列最长允许8MB。Oralce12c最长的varchar(30000)约为30Kb,可以存储。但是如果文本不是需要分析的列,最好还是放在OSS中。 |
NVARCHAR2(size) |
NVARCHAR2(1-4000) |
string |
单个String列最长允许8MB。 |
NUMBER [ (p [, s]) ] |
无小数位 p and s 小于等于17,例如NUMBER(17,2) |
无小数位 bigint |
考虑精度丢失情况,数值1.1在oracle存储和在ODPS存储必须完全相等。所以,这里的相等就是看到的数字全一致。无法对应的数据类型,只能存储为varchar。 |
FLOAT [(p)] |
float(8) |
double |
Float中的p指的是二进制的长度,最大可以到126。等同于NUMBER(38)。占22字节。所以,如果数据与NUMBER相同,请参考NUMBER对应关系。 |
LONG |
最长可以到达2Gb长度的字符类型。 |
无 |
建议数据存储在OSS |
DATE |
日期 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。如果同步到ADS也要存储为日期,转为datetime类型。(oracle 年的范围 -4713 到 +9999) |
BINARY_FLOAT |
32-bit floating point number. This data type requires 4 bytes. |
double |
等同于oracle的float(4),number(7) |
BINARY_DOUBLE |
64-bit floating point number. This data type requires 8 bytes. |
double |
等同于oracle的float(8), number(17) |
TIMESTAMP[(fractional_seconds_precision)] |
时间戳 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。如果同步到ADS也要存储为日期,转为datetime类型。 |
TIMESTAMP[(fractional_seconds_precision)] WITHTIME ZONE |
时间戳,带时区 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。TIME ZONE 特征丢失。 |
TIMESTAMP[(fractional_seconds_precision)] WITHLOCAL TIME ZONE |
时间戳,带时区 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。TIME ZONE 特征丢失。 |
INTERVAL YEAR [(year_precision)] TOMONTH |
|
bigint |
时间间隔无对应数据类型,建议转为秒 |
INTERVAL DAY [(day_precision)] TO SECOND[(fractional_seconds_precision)] |
|
bigint |
时间间隔无对应数据类型,建议转为秒 |
RAW(size) |
RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。 |
string |
string |
LONG RAW |
LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节 |
|
建议数据存储在OSS |
ROWID |
行唯一识别字符串 |
string |
物理ROWID(Physical Rowid)可以让我们快速的访问某些特定的行。只要行存在,它的物理ROWID就不会改变。高效稳定的物理ROWID在查询行集合、操作整个集合和更新子集是很有用的。例如,我们可以在UPDATE或DELETE语句的WHERE子句中比较UROWID变量和ROWID伪列来找出最近一次从游标中取出的行数据。 |
UROWID [(size)] |
行唯一识别字符串的base-64编码 |
string |
扩展ROWID使用检索出来的每一行记录的物理地址的base-64编码。ROWIDTOCHAR(),ROWIDTOCHAR() |
CHAR [(size [BYTE | CHAR])] |
定长字符串 |
string |
string |
NCHAR[(size)] |
定长字符串 |
string |
string |
CLOB |
字符型大字段数据类型 |
无 |
建议数据存储在OSS |
NCLOB |
字符型大字段数据类型 |
无 |
建议数据存储在OSS |
BLOB |
二进制型大字段数据类型 |
无 |
建议数据存储在OSS |
BFILE |
二进制文件,存储在数据库外的操作系统文件,只读的。把此文件当二进制处理。 |
无 |
建议数据存储在OSS |