一:获取表信息

SELECT
    n.nspname AS schema_name,
    c.relname AS table_name,
    d.description AS table_comment
FROM
    pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = 0
WHERE
    -- c.relname = 'your_table_name' and  -- 替换为你的表名
     c.relkind = 'r' -- 'r' 表示普通表
		 and n.nspname='registration-1'
SELECT *
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema', 'pg_catalog')
AND table_type='BASE TABLE'
and table_schema='registration-1'
ORDER BY  table_name;

二:表字段信息

SELECT
    n.nspname AS schema_name,
    c.relname AS table_name,
    a.attname AS column_name,
    pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
    CASE
        WHEN a.atttypid = 'char'::regtype OR a.atttypid = 'varchar'::regtype OR a.atttypid = 'text'::regtype THEN a.atttypmod - 4
        ELSE NULL
    END AS length,
    d.adsrc AS default_value,
    CASE
        WHEN a.attnotnull THEN 'NOT NULL'
        ELSE 'NULLABLE'
    END AS is_nullable,
    pg_catalog.col_description(a.attrelid, a.attnum) AS comment
FROM
    pg_catalog.pg_attribute a
    JOIN pg_catalog.pg_class c ON a.attrelid = c.oid
    JOIN pg_catalog.pg_namespace n ON c.relnamespace = n.oid
    LEFT JOIN pg_catalog.pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE
    a.attnum > 0
    AND NOT a.attisdropped
    AND n.nspname NOT IN ('pg_catalog', 'information_schema')
		and c.relname in ('')
ORDER BY
    n.nspname,
    c.relname,
    a.attname;
SELECT 
    n.nspname AS schema_name,
    c.relname AS table_name,
    a.attname AS column_name,
    CASE
        WHEN t.typname = 'char' THEN 'char(' || CASE WHEN a.atttypmod>4 THEN a.atttypmod-4  ELSE 0 END  || ')'    
				WHEN t.typname = 'int2' THEN 'number(2,0)'
				WHEN t.typname = 'int4' THEN 'number(4,0)'
				WHEN t.typname = 'int8' THEN 'number(16,0)'
        WHEN t.typname = 'varchar' THEN 'varchar(' || CASE WHEN a.atttypmod>4 THEN a.atttypmod - 4 ELSE 0 END  || ')'
        WHEN t.typname = 'text' THEN 'varchar'
        WHEN t.typname = 'bpchar' THEN 'char(' || CASE WHEN a.atttypmod>4 THEN a.atttypmod - 4 ELSE 0 END  || ')'
        WHEN t.typname LIKE '%time%' OR t.typname = 'date' OR t.typname = 'timestamp' OR t.typname = 'timestamptz' THEN 'Date'
        WHEN t.typname IN ('int2', 'int4', 'int8', 'smallint', 'integer', 'bigint', 'numeric', 'decimal') THEN 
				                  
            CASE 
                WHEN a.atttypmod = -1 THEN 'number'
                ELSE 'number(' || (CASE WHEN a.atttypmod > 0 THEN (a.atttypmod - 4) / 65536 ELSE 0 END) || ',' || 
                    (CASE WHEN a.atttypmod > 0 THEN (a.atttypmod - 4) % 65536 ELSE 0 END) || ')'
            END
        ELSE t.typname
    END AS data_type,
    d.adsrc AS default_value,
    CASE WHEN a.attnotnull THEN 'NO' ELSE 'YES' END AS is_nullable,
    pg_catalog.col_description(a.attrelid, a.attnum) AS comment
FROM 
    pg_catalog.pg_attribute a
    JOIN pg_catalog.pg_class c ON a.attrelid = c.oid
    JOIN pg_catalog.pg_type t ON a.atttypid = t.oid
    JOIN pg_catalog.pg_namespace n ON c.relnamespace = n.oid
    LEFT JOIN pg_catalog.pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE 
    a.attnum > 0 
    AND NOT a.attisdropped
    AND c.relkind = 'r'  -- Only tables, no views or other objects
		and c.relname in  (
		SELECT
    c.relname
FROM
    pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = 0
WHERE
    -- c.relname = 'your_table_name' and  -- 替换为你的表名
     c.relkind = 'r' -- 'r' 表示普通表
		 and n.nspname='registration-1')
ORDER BY 
    schema_name, 
    table_name, 
    a.attnum;