1. 查询 SQL
SELECTc.table_schema,c.table_name,c.column_name,c.data_type,c.udt_name,CASE-- 数值WHEN c.udt_name IN ('int2','int4','int8','float4','float8','numeric','money')THEN 'NUMERIC'-- 布尔WHEN c.udt_name = 'bool'THEN 'BOOLEAN'-- 日期/时间WHEN c.udt_name IN ('date','time','timetz','timestamp','timestamptz','interval')THEN 'DATETIME'-- 字符WHEN c.udt_name IN ('bpchar','varchar','text')THEN 'STRING'-- JSONWHEN c.udt_name IN ('json','jsonb')THEN 'JSON'-- 数组WHEN c.udt_name ILIKE '%[]'THEN 'ARRAY'-- 其余全部进 OTHERELSE 'OTHER'END AS type_category
FROM information_schema.columns c
WHERE c.table_schema = :schemaAND c.table_name = :table
ORDER BY c.ordinal_position;
2. Java 枚举(含中文注释)
package com.example.db;/*** PostgreSQL 字段类型 → Java 简化分类*/
public enum PgTypeCategory {/*** 数值型(int2/int4/int8/float4/float8/numeric/money)*/NUMERIC,/*** 布尔型(bool)*/BOOLEAN,/*** 日期/时间型(date/time/timetz/timestamp/timestamptz/interval)*/DATETIME,/*** 字符型(bpchar/varchar/text)*/STRING,/*** JSON 型(json/jsonb)*/JSON,/*** 数组型(xxx[])*/ARRAY,/*** 其他:二进制(bytea)、UUID、网络地址(inet/cidr/macaddr)、几何(point/line/…)、* 自定义复合类型、枚举、域等全部归入此类*/OTHER
}