; 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