如何从特定数据库中检索具有行数的表名?

Posted

技术标签:

【中文标题】如何从特定数据库中检索具有行数的表名?【英文标题】:How can i retrieve table names with rows count from specific database? 【发布时间】:2011-03-31 09:23:53 【问题描述】:

如何检索特定数据库的表名和行数?

就像我的数据库名称是 xyz。 XYZ 数据库我想获取特定表的所有表和记录数。

查询

SELECT status.real_name AS "real_name", status.friendly_name AS "friendly_name", table_rows AS "quant_of_rows", ROUND((data_length + index_length)/1024/1024,2) AS "total_size_mb" FROM information_schema.TABLES RIGHT JOIN table_status ON status.real_name = information_schema.TABLES.TABLE_NAME WHERE information_schema.TABLES.table_schema='database_name';

此查询显示 4 列。

    原表名 友好的表名 表记录 表格大小

我遇到了第 3 列的问题。对于 InnoDB 表,table_rows 只是 SQL 优化中使用的粗略估计。

我可以用这样的东西代替 table_rows 吗?

(select count(*) from information_schema.TABLES.TABLE_NAME) AS "Quant_of_Rows"

获取数据库的 table_row 的其他方法是什么?

【问题讨论】:

【参考方案1】:

this? 之类的东西还是我没抓住重点?

--皮特

【讨论】:

【参考方案2】:

SHOW TABLE STATUS

并查看“名称”和“行”列

【讨论】:

【参考方案3】:
    @temp_table = []
    ActiveRecord::Base.connection.tables.each do |table|
      count = ActiveRecord::Base.connection.execute("SELECT COUNT(*) as count FROM #table").fetch_hash['count']
      size = ActiveRecord::Base.connection.execute("SHOW TABLE STATUS LIKE '#table'").fetch_hash
      @temp_table <<  :table_name => table,
          :records => count.to_i,
          :size_of_table => ((BigDecimal(size['Data_length']) + BigDecimal(size['Index_length']))/1024/1024).round(2)
        
      end
    end

【讨论】:

以上是关于如何从特定数据库中检索具有行数的表名?的主要内容,如果未能解决你的问题,请参考以下文章

如何构建具有特定行数的表格视图?

如何快捷地查询Oracle中每个用户表的表名和行数?

在postgresql中如何从数据库中检索出所有的表名

如何从雪花中的数据库模式中检索所有表名

PostgreSQL 如何检索数据库中所有表里,包含FileName字段的表名

如何将字符串(来自具有 n 行数的文件)存储在动态数组中? C++