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
}