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

PHP & Base de données Discussion :

modifier les COLUMN_COMMENT


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut modifier les COLUMN_COMMENT
    Bonsoir à tous,

    Je dois modifier environ 180 column_comment dans 4 tables d'une base MySql.

    Existe-t-il un moyen de faire un script qui me permettrait d'automatiser l'affaire.

    J'ai tenté divers trucs qui ne fonctionnent pas

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE DescProjet MODIFY COLUMN AssociesRole COMMENT='blah blah'

    Les attributs des colonnes ne sont pas tous identiques et je souhaite que modifier le COMMENT.

    Dernier point je ne veux pas changer le COMMENT mais ajouter du texte aux comments existants !

    Une piste ?

    D'avance merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    si tu veux récupérer les noms des colonnes sans trop te fatiguer tu as à ta disposition la table système INFORMATION_SCHEMA (qui est une vue à vrai dire) qui contient des tonnes d'informations sur les objets de la base.

    Regarde ceci

    Note que tu ne pourras pas faire un UPDATE sur cette table :
    INFORMATION_SCHEMA is the information database, the place that stores information about all the other databases that the MySQL server maintains. Inside INFORMATION_SCHEMA there are several read-only tables. They are actually views, not base tables, so there are no files associated with them, and you cannot set triggers on them. Also, there is no database directory with that name.

    Although you can select INFORMATION_SCHEMA as the default database with a USE statement, you can only read the contents of tables, not perform INSERT, UPDATE, or DELETE operations on them.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci pour ta réponse (bien documentée par ailleurs et que j'avais visiter).

    J'ai fait une requête sur la structure de la table, voir + bas, avec les outils PHP admin classique.

    Je suis arrivé à cette requête qui fonctionne parfaitement sur une col.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "ALTER TABLE `Comp_DescProjet` CHANGE `AssociesRole` `AssociesRole` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT \'€€/Archivable/€€\'";
    La question suivante est comment récupérer les attributs des column à modifier pour les remettre dans la requête ? Avec schema_information column menant nulle part ! (pour moi en tout cas) !

    Ensuite comment concaténer le commentaire existant avec le texte à ajouter ?

    Dernière question, comment faire une boucle sur toutes les col à altérer ?

    D'avance merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    il va falloir que tu procèdes en plusieurs étapes :
    1. Récupérer dans un tableau les informations nécessaires de toutes les tables
    2. Monter la chaine sql d'alteration pour chaque table (avec les infos récupérées précédemment tu pourras faire les concaténations)
    3. Exécuter tout le SQL d'altération

    Pour cela tu devras boucler sur le tableau généré à l'étape 1

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci,

    Je me doute que ce n'est pas simple.

    Pour simplifier je peux faire la récap des infos par table (il n'y a que 6 ou 7 tables).
    Mais comment faire pour faire le tableau de récap puis exploiter ces données.

    Je ne "joue" que très exceptionnellement avec "schema_informations" ce qui explique ma mal-adresse dans ce genre de situation.

    Cdlt

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ben pour automatiser ça, il va falloir que tu mettes les mains dans le cambouis (car MYSQL ne facilite pas les choses)

    Avec ce code, tu va récupérer les définitions totales des tables dans le WHERE.

    Code php : 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
    mysql_connect($server, $login, $pwd);
    mysql_select_db($db_name);
     
    $sql = <<<'SQL'
    SELECT
        INFORMATION_SCHEMA.COLUMNS.*
    FROM
        INFORMATION_SCHEMA.COLUMNS
    WHERE
        TABLE_NAME    = 't_abc'
        OR TABLE_NAME = 't_def'
    SQL;
     
    $qry  = mysql_query($sql);
    $data = array();
     
    while($row = mysql_fetch_assoc($qry))
    {
        $data[$row['TABLE_NAME']][$row['COLUMN_NAME']] = $row;
    }

    Ensuite pour mettre à jour tes commentaires, tu n'as pas le choix que de sortir l'artillerie lourde (merci MYSQL). Tu dois recréer complètement les colonnes pour lesquelles tu souhaites changer les commentaires (les définitions). Et c'est là que ça se complique car tu dois parser le tableau $row et recréer à partir de ses valeurs le code SQL correspondant. Bon courage.
    Et si tu vas jusqu'au bout, ça serait sympa de poster ici le code pour les copains.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci pour ta réponse bien détaillée.

    Ja vais regarder ceci de plus ce soir ou demain dans la journée.

    Soit assuré que si j'arrive à une solution exploitable de la publierai "in extenso" pour les "copains". (Voir mes différents récents posts).

    Je vais voir ce que les gens de « Bases de données > MySQL » pensent de ce problème de parsing.

    Cdlt

Discussions similaires

  1. Modifier les COLUMN_COMMENT
    Par bronon dans le forum Requêtes
    Réponses: 8
    Dernier message: 02/04/2013, 12h28
  2. [Crystal Reports 10] Modifier les données d'un état
    Par jidea dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/08/2004, 18h16
  3. Réponses: 4
    Dernier message: 27/05/2004, 15h00
  4. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26
  5. [EXCEL]Modifier les marges d'une page dans Excel
    Par ms91fr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/01/2004, 15h26

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