pg-to-hive-type.ini 1.6 KB

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