How do you find the row count for all your tables in Postgres

前端 未结 15 2243
无人及你
无人及你 2020-11-22 12:31

I\'m looking for a way to find the row count for all my tables in Postgres. I know I can do this one table at a time with:

SELECT count(*) FROM table_name;
         


        
15条回答
  •  迷失自我
    2020-11-22 13:04

    I don't remember the URL from where I collected this. But hope this should help you:

    CREATE TYPE table_count AS (table_name TEXT, num_rows INTEGER); 
    
    CREATE OR REPLACE FUNCTION count_em_all () RETURNS SETOF table_count  AS '
    DECLARE 
        the_count RECORD; 
        t_name RECORD; 
        r table_count%ROWTYPE; 
    
    BEGIN
        FOR t_name IN 
            SELECT 
                c.relname
            FROM
                pg_catalog.pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
            WHERE 
                c.relkind = ''r''
                AND n.nspname = ''public'' 
            ORDER BY 1 
            LOOP
                FOR the_count IN EXECUTE ''SELECT COUNT(*) AS "count" FROM '' || t_name.relname 
                LOOP 
                END LOOP; 
    
                r.table_name := t_name.relname; 
                r.num_rows := the_count.count; 
                RETURN NEXT r; 
            END LOOP; 
            RETURN; 
    END;
    ' LANGUAGE plpgsql; 
    

    Executing select count_em_all(); should get you row count of all your tables.

提交回复
热议问题