Oracle - ODPS數據類型轉換
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 |
最後更新:2017-07-04 22:32:08