【问题标题】:how to get count of multiple tables from oracle database? [duplicate]如何从 oracle 数据库中获取多个表的计数? [复制]
【发布时间】:2018-04-02 07:44:45
【问题描述】:

我需要找出以下格式的大量表格(例如:40,50 个表格)的数量,我将在其中提供表格集(作为参数或表格列表)。

换句话说,我需要为用户定义的表集找到如下表的计数。

TABLE_NAME :  ROW_COUNT
table_a    :   1000000
table_b    :   200000
table_c    :   450000
table_d    :   80000

等等。

1.) sql developer 或 toad 或任何其他工具中是否有内置选项可以立即获取多个表的计数?

2.) 是否有一个 sql 语句或 pl/sql 脚本可以在输出之上获得?

注意:请注意,我不想获取架构中所有表的计数。我只想要特定的表格列表。例如:假设架构中有 100 个表,但我只想要我提到的 25 个表的计数

【问题讨论】:

    标签: sql database oracle plsql count


    【解决方案1】:

    像这样的PL/SQL 块将起作用。使用EXECUTE IMMEDIATE 动态执行从ALL_TABLES 获取的表名形成的查询字符串,

    DECLARE
        V_YOUR_SCHEMA VARCHAR2(30) ;
        V_COUNT NUMBER;
    BEGIN
        V_YOUR_SCHEMA :='SCHEMA_NAME';
    
        FOR L_TABLE_NAME IN (SELECT TABLE_NAME FROM ALL_TABLES WHERE SCHEMA_NAME = v_YOUR_SCHEMA)
        LOOP
            EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || v_YOUR_SCHEMA ||'.' ||L_TABLE_NAME INTO V_COUNT;
            DBMS_OUTPUT.PUT_LINE(L_TABLE_NAME||' : '||V_COUNT);
        END LOOP;
     END;
     /
    

    定义的表名列表的片段:

    DECLARE
        V_YOUR_SCHEMA VARCHAR2(30) ;
        V_COUNT NUMBER;
        V_TABLE_LIST DBMS_SQL.VARCHAR2_TABLE;
        TYPE V_LIST_TYPE is VARRAY(50) of VARCHAR2(30);
    BEGIN
        V_YOUR_SCHEMA :='SCHEMA_NAME';
    
        V_TABLE_LIST V_LIST_TYPE := V_LIST_TYPE('TABLE1', 'TABLE2', 'TABLE3');
    
        FOR L_ITER IN 1..V_TABLE_LIST.COUNT
        LOOP
            EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || v_YOUR_SCHEMA ||'.' ||V_TABLE_LIST(L_ITER) INTO V_COUNT;
            DBMS_OUTPUT.PUT_LINE(V_TABLE_LIST(L_ITER)||' : '||V_COUNT);
        END LOOP;
     END;
     /
    

    注意:查看ALL_TABLES 也有一个列num_rows,它被填充 仅当您使用 DBMS_STATS 包收集有关表的统计信息时。

    【讨论】:

    • 为什么不从 USER_TABLES 中选择?此外,analyze 已被弃用十多年:始终为use DBMS_STATS package
    • 在哪里指定表格列表?
    • where 子句中。
    • @rocxyjay 添加了另一个示例
    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2019-07-28
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多