PostgreSQL 统计某库下各表字段类型对应定义的长度
在PostgreSQL中,可以通过查询系统表和信息模式来统计数据库下各表字段对应定义的长度。以下是一个SQL查询示例,它会返回指定数据库中所有用户表的字段名称、数据类型以及定义的长度(如果适用):
SELECT
t.table_schema || '.' || t.table_name AS table_full_name,
c.column_name,
c.data_type,
CASE c.data_type
WHEN 'character' THEN c.character_maximum_length
WHEN 'character varying' THEN c.character_maximum_length
WHEN 'text' THEN c.character_maximum_length
WHEN 'bit' THEN c.bit_length
WHEN 'bit varying' THEN c.bit_length
WHEN 'numeric' THEN c.numeric_precision
WHEN 'decimal' THEN c.numeric_precision
WHEN 'integer' THEN c.numeric_precision
WHEN 'smallint' THEN c.numeric_precision
WHEN 'real' THEN c.numeric_precision
WHEN 'double precision' THEN c.numeric_precision
WHEN 'date' THEN NULL
WHEN 'time without time zone' THEN c.datetime_precision
WHEN 'time with time zone' THEN c.datetime_precision
WHEN 'timestamp without time zone' THEN c.datetime_precision
WHEN 'timestamp with time zone' THEN c.datetime_precision
ELSE NULL
END AS length
FROM
information_schema.columns c
JOIN
pg_tables t ON c.table_name = t.table_name
WHERE
t.table_schema = 'your_database_schema' -- 替换为你的数据库模式名称
AND c.table_catalog = current_database() -- 限定当前数据库
ORDER BY
table_full_name,
c.ordinal_position;
请将 'your_database_schema'
替换为你要查询的数据库模式名称。这个查询会返回每个字段的名称、数据类型以及长度,如果长度适用。对于非character类型的字段,比如numeric、integer等,长度可能表示精度。
运行这个查询将为你提供所需的统计信息。
评论已关闭