我想通过查询使用mysql和mysql查找数据库中所有表的表名和行数。有什么疑问可以找到吗?
答案 0 :(得分:1)
SQL-standard INFORMATION_SCHEMA
provides information about the structure of your database - 它有哪些表,等等。但是,它不包含行数。
至少对于PostgreSQL,您至少有两个获取行数的选项:
使用外部程序或PL / PgSQL函数,使用EXECUTE
生成动态SQL,为SELECT count(*) FROM tablename
中的每个表执行INFORMATION_SCHEMA
(不包括系统表) ;或
运行ANALYZE
,然后从PostgreSQL统计信息表中获取近似行数。这种方法要快得多,但只能根据统计抽样和估算得到一个近似的表行数。
PostgreSQL here已详细讨论过这个问题。
查询INFORMATION_SCHEMA
表列表然后遍历执行count
的表的方法应该可以跨所有数据库移植。其他方法可能需要不同程度的数据库特定代码。
答案 1 :(得分:0)
对于postgresql:
SELECT
nspname AS schema,relname table_name,reltuples::int rows_count
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r' and reltuples>0
ORDER BY relname ;