| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- ; PG 类型 → Hive 类型映射,给 bin/hive-ddl-gen.py -l ods 用。
- ;
- ; 规则:
- ; 1. PG 类型先 normalize:去括号参数(numeric(12,2) → numeric)+ 去时区后缀
- ; (timestamp(6) without time zone → timestamp)
- ; 2. normalize 后查本表,命中即用映射值;未命中报错让人显式补规则
- ; 3. ConfigParser 接受带空格的 key(如 'character varying')
- ;
- ; 设计选择(详见 kb/93 ADR-06):
- ; - int 系(smallint/integer/bigint)统一 BIGINT:吸收 PG 字段类型升级,下游聚合无 INT 溢出风险
- ; - numeric/decimal 统一 DECIMAL(20,4):所有金额同精度,下游 SQL JOIN 无类型不一致;极端高精度场景本项目无
- ; - timestamp 走 Hive 原生 TIMESTAMP:日期函数原生用,本项目集群单一时区无迁移风险
- ; - text / varchar / json / jsonb → STRING:Hive 无原生 JSON
- ; - bytea → BINARY:本项目暂无 bytea 字段,规则保留备用
- [mapping]
- ; 整数类
- smallint = BIGINT
- integer = BIGINT
- int = BIGINT
- int2 = BIGINT
- int4 = BIGINT
- int8 = BIGINT
- bigint = BIGINT
- ; 数值类
- numeric = DECIMAL(20,4)
- decimal = DECIMAL(20,4)
- ; 文本类
- text = STRING
- varchar = STRING
- character varying = STRING
- character = STRING
- char = STRING
- ; 时间类
- timestamp = TIMESTAMP
- date = DATE
- ; 布尔
- boolean = BOOLEAN
- bool = BOOLEAN
- ; JSON(Hive 无原生类型,存原字符串,下游 get_json_object 解析)
- json = STRING
- jsonb = STRING
- ; 浮点类(精度敏感字段必须用 numeric→DECIMAL,浮点仅用于评分 / 经纬度等近似值)
- real = FLOAT
- double precision = DOUBLE
- float = FLOAT
- ; 二进制
- bytea = BINARY
|