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

SGBD Perl Discussion :

Récupérer les commentaires d'une BD Mysql


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut Récupérer les commentaires d'une BD Mysql
    Bonjour,
    Mysql (pg également) permet de commenter les tables d'une bd (ainsi que les champs).
    Question : Peut on avec perl récupérer ces commentaires?
    Si non, y'a t'il un SGBD qui le permette ?
    actuellement, le code suivant me permet juste de récupérer la structure de chaque table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    if ($dbh != 0) {
                my $sth = $dbh->prepare("describe $tablename");
                $sth->execute;
                my $numRows = $sth->rows;            
                if ($numRows > 0) {
                    print $TABLEINDEX "<table border=1>";                
                    while (my @row = $sth->fetchrow_array()) {
                        print $TABLEINDEX "<tr>";
                        foreach my $col (@row) {
                                $col = "&nbsp;" unless defined $col;
                                $col = "&nbsp;" if ($col eq "");
                                print $TABLEINDEX "<td>$col</td>";
                        }
                        print $TABLEINDEX "</tr>\n";
                    }
                    print $TABLEINDEX "</table>";
                }
                $sth->finish;
            }
    J'ai pas mal cherché sur le forum/net, mais rien trouvé.
    Merci de votre aide.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW TABLE STATUS FROM TABASE
    te permet d'avoir toutes les informations des tables d'une base de données

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    Merci djibril
    En plus ça m'a mise sur la voie pour récupérer les commentaires par table avec :
    SHOW FULL COLUMNS FROM TABLE_NAME FROM DATABASE_NAME.
    Bon, je n'ai plus qu'à me pencher sur le script de phpxref pour lui faire afficher l'ensemble des données qui m'interesse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut Optimisation d'un code ?
    Alors, après avoir fait des recherches via la doc mySql & perl, je suis arrivé à obtenir ce que je recherchais, c.a.d :
    -Obtenir le commentaire sur chaque table de la bd.
    -Obtenir les commentaires sur chaque champs des tables.
    Voici le code que j'ai développé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    print $TABLEINDEX "<h3>Description de la table :</h3>\n\n";
            #Modif -> on récupère la description de la table.
            if ($dbh != 0) {
                my $sql = qq'SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = \'$tablename\'';           
                my $row = $dbh ->selectrow_array($sql);
                print $TABLEINDEX "$row";
                }
            #Modif -> on exploite uniquement les champs interessants de la table.
            if ($dbh != 0) {            
                my $sql = qq'SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = \'$tablename\'';           
                $sth = $dbh->prepare($sql);            
                $sth->execute;           
                my $numRows = $sth->rows;
                if ($numRows > 0) {
                print $TABLEINDEX "<table border=1>";            
                while(my @row = $sth->fetchrow_array()){                
                print $TABLEINDEX "<tr>";
                foreach my $col (@row) {            
                $col = "&nbsp;" unless defined $col;
                $col = "&nbsp;" if ($col eq "");            
                print $TABLEINDEX "<td>$col</td>";
                }
                print $TABLEINDEX "</tr>\n";
                }
                print $TABLEINDEX "</table>";
                }
                $sth->finish;            
            } else {
                print $TABLEINDEX "Description de la table non disponible!<br><br>";
            }
    visuellement, le résultat :

    Puis je optimiser ce code
    une seule requète au lieu de deux?
    Ensuite, dans cette requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $sql = qq'SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = \'$tablename\'';
    que signifie 'qq'
    Sans ce 'qq', j'ai une erreur de syntaxe. Je l'ai mis après l'avoir vu dans un script trouvé sur le net, mais sans savoir exactement sa portée.
    Désolé pour les questions idiotes ...
    Merci.

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Citation Envoyé par WhoIsTiti
    que signifie 'qq'
    Sans ce 'qq', j'ai une erreur de syntaxe.
    qq permet d'encader ta requête de doubles quotes et permet ainsi l'interprétation des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     my $sql = qq'SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = \'$tablename\'';
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     my $sql = "SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = \'$tablename\'";

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    merci Jasmine pour les précisions concernant la fonction qq.
    Qu'en est il de l'optimisation de mon code Dois je garder les deux requêtes (exploitant des méta données) ou est il possible de n'en faire qu'une Peut être que le code que je fournis n'est pas assez pertinent pour donner une réponse détaillée
    cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer les donnés d'une base MySQL
    Par pharaon_98 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/03/2011, 16h48
  2. [MySQL] récupérer les commentaires des champs d'une table myslq
    Par nadh3m dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2010, 18h32
  3. Récupérer les lignes d'une bd MySQL
    Par El-Diablo- dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/03/2008, 16h21
  4. [MySQL] Récupérer les colonnes d'une table MySQL
    Par Jeetiz dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 20h10
  5. Réponses: 5
    Dernier message: 07/09/2006, 14h41

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