2010-12-04

Contar o número de registos em todas as tabelas

This is the portuguese version of a previous post:Rows count for every table.

Foi-me pedido para traduzir um post anterior.

Apresento aqui um Script para mostrar o número de registos (linhas) para todas as tabelas.

Correr com "SET SERVEROUTPUT ON".


DECLARE
li_count INTEGER;
lv_table VARCHAR2 (61); --30+1+30 : owner||'.'||table_name
BEGIN
FOR c_table IN (SELECT owner, table_name FROM all_tables order by owner, table_name)
LOOP
lv_table := c_table.owner || '.' || c_table.table_name;

EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || lv_table INTO li_count;

DBMS_OUTPUT.put_line (rpad(lv_table,62,'.') || li_count);
END LOOP;
END;


-- uma amostra do output

MDSYS.OGIS_GEOMETRY_COLUMNS...................................0
MDSYS.OGIS_SPATIAL_REFERENCE_SYSTEMS..........................0
MDSYS.SDO_COORD_AXES..........................................139
MDSYS.SDO_COORD_AXIS_NAMES....................................28
MDSYS.SDO_COORD_OP_METHODS....................................82
MDSYS.SDO_COORD_OP_PARAMS.....................................153
MDSYS.SDO_COORD_OP_PARAM_USE..................................680
MDSYS.SDO_COORD_OP_PARAM_VALS.................................9534


Se quiser pode no select limitar por schema e pode também alterar o programa para, em vez de mandar para o output, guardar o resultado numa tabela para depois poder por exemplo ordenar por número de linhas.

No comments:

Post a Comment

Os comentários são moderados.
The comments are moderated.