ODPS数据类型:
类型 |
描述 |
取值范围 |
Bigint |
8字节有符号整型。请不要使用整型的最小值 (-9223372036854775808),这是系统保留值。 |
-9223372036854775807 ~ 9223372036854775807 |
String |
字符串,支持UTF-8编码。其他编码的字符行为未定义。 |
单个String列最长允许8MB。 |
Boolean |
布尔型。 |
True/False |
Double |
8字节双精度浮点数。 |
-1.010308~ 1.010308 |
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)]WITHTIMEZONE |
时间戳,带时区 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。TIMEZONE特征丢失。 |
TIMESTAMP[(fractional_seconds_precision)]WITHLOCALTIMEZONE |
时间戳,带时区 |
datetime |
因为当前ADS日期类型函数支持不够丰富,统一转为unixtime格式,存储为bigint类型。TIMEZONE特征丢失。 |
INTERVALYEAR[(year_precision)]TOMONTH |
|
bigint |
时间间隔无对应数据类型,建议转为秒 |
INTERVALDAY[(day_precision)]TOSECOND[(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 |