外表数据类型映射
本文汇总外表(Foreign Table)在不同外部数据源/表格式下的数据类型映射规则,用于创建外表与数据访问时的类型对齐与兼容性判断。
ORC/Parquet 数据类型映射
| 外部类型 | ProtonBase 类型 | 说明 |
|---|---|---|
| BOOLEAN | BOOLEAN | 直接映射 |
| TINYINT | SMALLINT | 兼容性提升(向上提升) |
| SMALLINT | SMALLINT | 直接映射 |
| INT | INTEGER | 直接映射 |
| BIGINT | BIGINT | 直接映射 |
| FLOAT | REAL | 直接映射 |
| DOUBLE | DOUBLE PRECISION | 直接映射 |
| DECIMAL(p,s) | DECIMAL(p,s) | 保留精度与标度 |
| STRING | TEXT | 变长文本 |
| VARCHAR(n) | VARCHAR(n) | 保留长度 |
| CHAR(n) | CHAR(n) | 固定长度 |
| BINARY | BYTEA | 二进制数据 |
| TIMESTAMP | TIMESTAMP | 直接映射 |
| DATE | DATE | 直接映射 |
ARRAY<type> | type[] | 数组元素类型递归映射 |
| MAP | Not Available | 暂不支持复杂类型 |
| STRUCT | Not Available | 暂不支持复杂类型 |
Delta Lake 数据类型映射
| 外部类型 | ProtonBase 类型 | 说明 |
|---|---|---|
| boolean | BOOLEAN | 直接映射 |
| short | SMALLINT | 直接映射 |
| integer | INTEGER | 直接映射 |
| long | BIGINT | 直接映射 |
| float | REAL | 直接映射 |
| double | DOUBLE PRECISION | 直接映射 |
| decimal(p,s) | DECIMAL(p,s) | 保留精度与标度 |
| string | TEXT | 变长文本 |
| varchar(n) | VARCHAR(n) | 保留长度 |
| char(n) | CHAR(n) | 固定长度 |
| binary | BYTEA | 二进制数据 |
| date | DATE | 直接映射 |
| timestamp | TIMESTAMPTZ | 带时区的时间戳 |
| timestamp_ntz | TIMESTAMP | 不带时区的时间戳 |
array<type> | type[] | 数组元素类型递归映射 |
| map | Not Available | 暂不支持复杂类型 |
| struct | Not Available | 暂不支持复杂类型 |
Apache Iceberg 数据类型映射
| 外部类型 | ProtonBase 类型 | 说明 |
|---|---|---|
| boolean | BOOLEAN | 直接映射 |
| int | INTEGER | 32-bit 有符号整数 |
| long | BIGINT | 64-bit 有符号整数 |
| float | REAL | 32-bit IEEE 754 浮点 |
| double | DOUBLE PRECISION | 64-bit IEEE 754 浮点 |
| decimal(p,s) | DECIMAL(p,s) | 保留精度与标度 |
| date | DATE | 直接映射 |
| time | TIME | 微秒精度 |
| timestamp | TIMESTAMPTZ | 带时区的时间戳 |
| timestamp_ntz | TIMESTAMP | 不带时区的时间戳 |
| timestamptz | TIMESTAMPTZ | 带时区的时间戳 |
| string | TEXT | 变长文本 |
| uuid | UUID | 直接映射 |
| fixed(n) | BYTEA | 定长二进制 |
| binary | BYTEA | 变长二进制 |
list<type> | type[] | 数组元素类型递归映射 |
| map | Not Available | 暂不支持复杂类型 |
| struct | Not Available | 暂不支持复杂类型 |
重要说明
- 复杂类型:
MAP/STRUCT(以及同类复杂嵌套结构)目前不支持直接映射为外表列类型;建议在外部写入前做 schema 扁平化或字段抽取。 - 数组类型:仅支持简单数组;数组元素类型会按本文规则递归映射。
- 精度与标度:
DECIMAL(p,s)会尽量保留 (p)(precision)与 (s)(scale)。