PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 28/07/2016 10:12:12

f.ravel
Membre

Compter les lignes de toutes les tables d'une base de données

Bonjour,

J'ai une très grosse base de données : plusieurs 10aines de schémas, des centaines de tables.

J'aurais souhaité savoir comment faire pour compter les lignes de toutes les tables de ma base de données ?

Je sais comment compter les lignes d'une table, mais ne sais pas le faire sur toutes les tables d'un coup.

Merci d'avance pour votre aide !

Hors ligne

#2 28/07/2016 10:14:42

Marc Cousin
Membre

Re : Compter les lignes de toutes les tables d'une base de données

Il n'y a rien qui le permette directement… si vous souhaitez vraiment faire ça, il faudra écrire un bout de code… soit côté client, soit côté serveur (en PLpgsql)


Marc.

Hors ligne

#3 28/07/2016 10:33:13

f.ravel
Membre

Re : Compter les lignes de toutes les tables d'une base de données

Ok, merci pour ce retour ultra rapide !

Je ne sais pas écrire le code en PLpgsql, je ne suis pas informaticien de formation. hmm

J'espérais que via une requête sur les tables ou sur les tables de statistiques il était possible de remonter ce genre d'information sans que ce ne soit trop compliqué.
En effet, quand on fait un clic droit sur un dossier "Tables" d'un schéma depuis pgAdmin et que l'on demande un "rapport des statistiques" cela nous remonte un tableau avec toutes les tables et notamment un champ "lignes vivantes" qui correspond bien au nombre de ligne des tables.

Au pire je peux me passer les schémas 1 à 1... y'en a 70. smile

Merci quand même !

Hors ligne

#4 28/07/2016 10:38:51

Marc Cousin
Membre

Re : Compter les lignes de toutes les tables d'une base de données

Éventuellement, si une estimation suffit, vous pouvez prendre reltuples dans la table pg_class… et pour que ça soit plus fin, faire la commande ANALYZE avant (pour collecter des stats sur toutes les tables):

select sum(reltuples) from pg_class where relkind='r' and relnamespace not in (select oid from pg_namespace where nspname in ('pg_catalog','information_schema'));

Sinon, il faudra écrire du code procédural…


Marc.

Hors ligne

#5 28/07/2016 10:48:01

f.ravel
Membre

Re : Compter les lignes de toutes les tables d'une base de données

Une estimation est tout à fait suffisante.

Ça marche très bien, merci !!!

Hors ligne

Pied de page des forums