【问题标题】:H2 Get row count for all tablesH2 获取所有表的行数
【发布时间】:2023-03-09 00:31:01
【问题描述】:

我想知道每个表的总行数。这适用于所有桌子。 H2 可以吗?

我在想一张桌子:

|表名 |行大小 |

目前我使用的是当前版本 1.3.170 (2012-11-30)。

【问题讨论】:

  • 你要统计总行数吗?
  • 在 H2 中不确定,但在 Oracle DB 中,您可以使用 SELECT table_name, num_rows FROM user_tables。检查那里是否也有相同的可用。
  • @Arpit 是每个表的总数。
  • @Orangecrush:这只会为您提供行数的估计,而不是实际数。

标签: sql count h2


【解决方案1】:

您需要使用用户定义的函数,例如:

drop alias count_rows;
create alias count_rows as 
'long countRows(Connection conn, String tableName) 
    throws SQLException {
ResultSet rs = conn.createStatement().
    executeQuery("select count(*) from " + tableName);
rs.next();
return rs.getLong(1); }';
select table_name, count_rows(table_name) count 
from INFORMATION_SCHEMA.TABLES 
where table_schema = 'PUBLIC';

此代码不考虑架构,仅适用于未加引号的表名。

【讨论】:

  • 像魅力一样工作。一开始我遇到了 Java 版本的问题,不知何故我把 Java 6 和 Java 7 混在一起了。然后我从控制台启动它,而不是双击 jar 文件。
  • 您可以使用table_schema = SCHEMA() 来限制仅对当前架构的调用
【解决方案2】:

试试SELECT table_name, row_count_estimate FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'PUBLIC'。它会为您提供“估计”,但结果很可能会为您提供所需的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2019-02-22
    • 1970-01-01
    • 2021-10-24
    • 2015-01-18
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多