Lister les noms des champs d'une table mysql

Résolu
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Pour réaliser un script sh je voudrais savoir s'il est possible de lister tous les noms des champs présents sur une table mysql.
Ne pas confondre avec lister le contenu des champs
Si oui comment si prendre pour les afficher depuis le shell ?

Merci

A voir également:

4 réponses

Utilisateur anonyme
 
salut,

Quelque chose comme: table describe;
mais je ne me souviens plus exactement.
Regarde dans le manuel
0
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonsoir

Ok j'ai trouvé pour table describe.
Cependant j'ai fait un script pour sélectionner le champ à modifier d'une requête mysql avec un menu via un numéro.
Mais je n'arrive pas à avoir le résultat désiré comme ceci ;
Veuillez sélectionner le champ a modifier : 
1) id 
2) nom_module 
3) code_maison_unite 
4) code_maison 
5) code_unite 
etc....


Script

#!/bin/bash 
#------- CONNECTION A LA BASSE DE DONNES AVEC BASH ------------- 
hote_db="localhost" 
nom_bd="domotique" 
nom_table="modules_x10" 
login_db="root" 
pass_bd="xxxxxxxx" 

dossier="/home/laurent/bash/BDD-Mysql"
nombre=$(IFS=''; { for i in $(ls -al $dossier); do echo "$i"; done } | wc -l)
fc=$(echo "DESCRIBE $nom_table" | mysql -p$pass_bd -u root $nom_bd | cut -f1) 
i=1 # on initialise le compteur  
echo "Veuillez sélectionner le champ a modifier :" 
while [ $i -le $nombre ];  do 
  echo $i ") $fc " #$(listing)  
  let $[ i+=1 ] # incremente i de 1 a chaque boucle 
done ; 
echo "" 
read modif_champ 


Le résultat
laurent@PC-ubuntu:~/bash/Ubuntu_12.04$ /home/laurent/bash/BDD-Mysql/bdd-table.sh
Veuillez sélectionner le champ a modifier :

1 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
2 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
3 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
4 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
5 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
6 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
7 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
8 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
9 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
10 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
11 ) Field
id
nom_module
code_maison_unite
code_maison
code_unite
nom_commande_On
nom_commande_Off
variateur_plus
variateur_moins
variateur_automatique
type
macro
emplacement
concerne
puissance
name_on
input_name_on
name_off
input_name_off
nom_groupe
laurent@PC-ubuntu:~/bash/Ubuntu_12.04$

D'où vient mon erreur ?

Merci
0
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonjour,

j'ai modifié mon code :

Script
    ar=($(echo "DESCRIBE $nom_table" | mysql -p$pass_bd -u root $nom_bd | cut -f1));   
    echo "Veuillez indiquer votre choix :"   
            select ntit in  ${ar[@]}    
                do    
    for l in $Reply;    
                        do   
                          if [ $l -lt $cnt ]   
                            then   
                                ((var=$l-1));   
                                open ${ar[$var]};   
                            else   
                                exit   
                          fi   
                        done   
                done   


Résultat :
    laurent@PC-ubuntu:~$ /home/laurent/bash/BDD-Mysql/bdd-table.sh   
    Veuillez indiquer votre choix :   
    1) Field                  12) type   
    2) id                     13) macro   
    3) nom_module             14) emplacement   
    4) code_maison_unite      15) concerne   
    5) code_maison            16) puissance   
    6) code_unite             17) name_on   
    7) nom_commande_On        18) input_name_on   
    8) nom_commande_Off       19) name_off   
    9) variateur_plus         20) input_name_off   
    10) variateur_moins        21) nom_groupe   
    11) variateur_automatique   
    #? 3   
    /home/laurent/bash/BDD-Mysql/bdd-table.sh: ligne 226 : [: 3 : opérateur unaire attendu   
    laurent@PC-ubuntu:~$


La ligne 226 est :
  if [ $l -lt $cnt ]


Ensuite je modifie le champs de ma table comme ceci.
    mysql_cmd="mysql -D $nom_bd -u$login_db -p$pass_bd"   
        $mysql_cmd -e "UPDATE $nom_table SET colonne1='$valeur2' WHERE id=$id "


Comment puis je faire pour qu'il sache que lorsque l'utilisateur tape 3 cela correspond à "nom_module" ?
Afin d'envoyer "nom_module" dans la variable $valeur2 pour modifier le champ ?

Merci.
0
Utilisateur anonyme
 
cnt n'est pas défini.
c'est quoi? le nombre d'élément du tableau ? alors ce serait ${#nomTableau[@]}
0