本文介紹ORC檔案、Parquet檔案和Avro檔案與AnalyticDB PostgreSQL版的資料類型對照表。
ORC檔案資料類型對照表
ORC資料類型 | AnalyticDB PostgreSQL版資料類型 |
BOOLEAN | bool |
SHORT | int2 |
INT | int4 |
LONG | int8 |
FLOAT | float4 |
DOUBLE | float8 |
DECIMAL | numeric |
CHAR | char |
STRING | text |
BINARY | bytea |
TIMESTAMP | timestamp |
DATE | date |
LIST(SHORT) | int2[] |
LIST(INT) | int4[] |
LIST(LONG) | int8[] |
LIST(FLOAT) | float4[] |
LIST(DOUBLE) | float8[] |
對於ORC中的LIST資料類型,目前僅支援轉換成AnalyticDB PostgreSQL版的一維數組。
Parquet檔案資料類型對照表
基礎資料類型
Parquet檔案中沒有提供Logical Types的情況下,資料類型對照如下:
Parquet資料類型 | AnalyticDB PostgreSQL版資料類型 |
BOOLEAN | bool |
INT32 | int4 |
INT64 | int8 |
INT96 | timestamp |
FLOAT | float4 |
DOUBLE | float8 |
BYTE_ARRAY | bytea |
FIXED_LEN_BYTE_ARRAY | bytea |
Parquet檔案中提供logical types的情況下,資料類型對照如下:
Parquet資料類型 | AnalyticDB PostgreSQL版資料類型 |
STRING | text |
DATE | date |
TIMESTAMP | timestamp |
TIME | time |
INTERVAL | interval |
DECIMAL | numeric |
INT(8)、INT(16) | int2 |
INT(32) | int4 |
INT(64) | int8json |
UINT(8/16/32/64) | int8 |
JSON | json |
BSON | jsonb |
UUID | uuid |
ENUM | text |
複雜資料類型
Parquet資料類型 | AnalyticDB PostgreSQL版資料類型 |
LIST<T> | T[] 說明
|
MAP | 不支援 |
STRUCT | 不支援 |
在資料匯入處理程序中,系統會自動進行類型轉換。如果遇到不支援的類型,匯入操作將失敗並返回錯誤資訊。
為獲得更好的查詢效能,建議使用基礎資料類型。
Avro檔案資料類型對照表
Avro資料類型對應AnalyticDB PostgreSQL版列的資料類型,Avro資料類型組成的Records類型對應AnalyticDB PostgreSQL版的資料表。
Avro資料類型(主類型、邏輯類型和元素類型) | AnalyticDB PostgreSQL版資料類型 |
BOOLEAN | bool |
INT | int4、int2 |
INT、DATE | date |
LONG | int8 |
LONG、TIMESTAMP | timestamp、timestamptz |
LONG、TIME | time |
FLOAT | float |
DOUBLE | float8 |
BYTES | bytea |
BYTES、DECIMAL(precision, scale) | numeric(precision、scale) |
STRING | char、varchar、text、numeric(不指定precision與scale) |
ARRAY、INT | int4[]、int2[] |
ARRAY、LONG | int8[] |
ARRAY、FLOAT | float[] |
ARRAY、DOUBLE | float8[] |
對於Avro中的ARRAY資料類型,目前僅支援轉換成AnalyticDB PostgreSQL版的一維數組。
不支援上表中未出現的Avro複雜資料類型。