IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Liste des tables et nombre de lignes


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Liste des tables et nombre de lignes
    Bonjour,

    J'ai une base données de 471 tables et je souhaite afficher la liste des noms tables et le nombre de lignes de chaque table.


    qui peut m'aider

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je te propose de créer une requête qui génèrera les 471 select count(*) dans tes différentes tables.
    En prenant comme hypothèse que ton SGBD reconnait les tables information_schema.
    Voilà la requête pour SQL server, il faudra adapter notamment l'opérateur de concaténation.
    Tu lances le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select 'select '''+ table_name  +  ''' as nom_table, count(*) as nbre_ligne from ' + table_name +';'
     from information_schema.tables
    where table_name like '%TON_CRITERE%'
    Puis tu prends le résultat de la requête que tu executes à ton tour.

    PS: Dans les règles du forum il est demandé de spécifier le SGbD, tu devrais nous le préciser, la réponse à ta question en dépend.
    Cordialement
    Soazig

  3. #3
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci soazig pour cette réponse rapide mais ca n'a pas marché.

    Au fait mon sgbdr est oracle 10g et j'ai appliqué la requête sur sql*plus.

    Est ce normal que ca ne passe pas ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Je ne sais pas si ORACLE 10 implémente les vues information_schema mais de mémoire sous oracle l'opérateur de concaténation est le double pipe ||, il faut donc remplacer mes + par des ||. ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 'select ''' || table_name  ||  ''' as nom_table, count(*) as nbre_ligne from ' || table_name ||';'
     FROM information_schema.TABLES
    WHERE table_name LIKE '%TON_CRITERE%';
    Il faut aussi remplacer TON_CRITERE par quelque chose qui soit pertinent pour toi!
    Et franchement ça n'a pas marché n'aide pas la résolution du problème, qu'as tu obtenu?
    Un message d'erreur? si oui lequel un résultat vide.
    A+
    Soazig

  5. #5
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut Sous Oracle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT    'select '''
           || object_name
           || ''' as nom_table, count(*) as nbre_ligne from '
           || object_name
           || ';'
      FROM all_objects
     WHERE owner = USER AND object_type = 'TABLE' AND object_name LIKE '%MA_SELECTION%';
    Signé : Capitaine Jean-Luc Picard

  6. #6
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut Avec User_Object
    C'est presque pareil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT    'select '''
           || object_name
           || ''' as nom_table, count(*) as nbre_ligne from '
           || object_name
           || ';'
      FROM user_objects
     WHERE  object_type = 'TABLE' AND object_name LIKE '%MA_SELECTION%';
    Et cadeau : le resultat à executer en une seule requete
    On ajoute UNION à la fin de chaque select sauf sur le dernier ou c'est un point virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT    'select '''
           || object_name
           || ''' as nom_table, count(*) as nbre_ligne from '
           || object_name
           || decode ( rownum , sign(row_number() over(ORDER BY rownum DESC ) - rownum) , ';' , ' UNION')
      FROM user_objects
     WHERE  object_type = 'TABLE' AND object_name LIKE '%MA_SELECTION%'
    Signé : Capitaine Jean-Luc Picard

Discussions similaires

  1. Liste des tables avec leur nombre d'enregistrements
    Par emilie1t dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2012, 16h28
  2. Réponses: 8
    Dernier message: 11/10/2009, 14h17
  3. Réponses: 3
    Dernier message: 17/08/2007, 16h17
  4. Capaciter des tables et nombre de ligne
    Par Landolsi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/02/2007, 10h45
  5. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo