giovedì 5 agosto 2010

Query per contare i record nelle tabelle

Queste due query servono per estrarre un elenco delle tabelle e dei record in esse contenute.

1) QUERY SCRIPT PER GENERAZIONE QUERY DI CONTA:
x SQL Server;
select '( SELECT ''', sys.tables.name ,'''AS TABELLA, COUNT(*) AS TROVATI FROM ', sys.tables.name,') UNION '
from sys.tables
order by sys.tables.name

x Oracle;
select '( SELECT '''|| table_name ||''' AS TABELLA, COUNT(*) AS TROVATI FROM '|| table_name||') UNION '
from sys.all_tables
 WHERE OWNER='DITTA1'
order by table_name

NB. per Oracle è sufficiente interrogare la vista sys.table_name, anche se il campo NUM_ROWS non mi sembra aggiornato in tempo reale

SELECT table_name,num_rows 
FROM sys.all_tables
WHERE owner='DITTA1'
ORDER BY num_rows DESC

Lanciare la query sopra con l'estrazione in formato testo (CTRL+T x formato
testo, CTRL+E per eseguire dal Query Analizer )

2) QUERY GENERATA:

(SELECT 'AGENTI ' AS TABELLA, COUNT(*) AS TROVATI FROM AGENTI ) UNION
(SELECT 'AGGRART ' AS TABELLA, COUNT(*) AS TROVATI FROM AGGRART ) UNION
.
.
(SELECT 'VERINPS ' AS TABELLA, COUNT(*) AS TROVATI FROM VERINPS ) UNION
(SELECT 'VETTORI ' AS TABELLA, COUNT(*) AS TROVATI FROM VETTORI )

Togliere come sopra l'ultima UNION;

Copiare la seconda query così generata e lanciarla al posto della prima:
ogni volta che si lancia restituisce il recordcount di ogni tabella.

Thanks Gianni

Nessun commento:

Posta un commento