SELECT c.table_schema AS schema, c.table_name AS "tableName", c.column_name AS "fieldName", c.data_type AS type, c.character_maximum_length AS length, c.numeric_precision AS precision, c.numeric_scale AS scale, c.ordinal_position AS column_id, COALESCE(s.n_live_tup, cl.reltuples)::bigint AS "RowCount", pg_total_relation_size(cl.oid) / 1024 AS "TotalSpaceKB", pg_relation_size(cl.oid) / 1024 AS "TableSpaceKB", (pg_total_relation_size(cl.oid) - pg_relation_size(cl.oid)) / 1024 AS "IndexSpaceKB" FROM information_schema.columns c JOIN pg_namespace ns ON ns.nspname = c.table_schema JOIN pg_class cl ON cl.relname = c.table_name AND cl.relnamespace = ns.oid AND cl.relkind = 'r' LEFT JOIN pg_stat_all_tables s ON s.relid = cl.oid -- WHERE c.table_schema IN ('public') ORDER BY c.table_schema, c.table_name, c.ordinal_position;