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

Shell et commandes GNU Discussion :

problème avec mysql sous shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 78
    Points : 40
    Points
    40
    Par défaut problème avec mysql sous shell
    salut,

    je veux savoir comment pourrai je envoyer le contenu d'un fichier dans une base de donnée en utilisant mysql sous shell?

    j'ai la base de donnée contenat les attribut (id_fichier,non_fichier,contenu)

    je veux par exemple copier le contenu du fichier /home/linux/fichier1.txt dans la table "fichier" avec un id_fichier automatique, nom_fichier ="fichier1" et son contenu

    comment faire??
    aidez moi svl
    merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 474
    Points
    19 474

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    une solution :

    ton script shell defini tes variables (droits, chemin, nom_fichier,etc....)
    il génère un script sql unique (temporaire)
    l'execute
    et si ok le purge.

    une facon simple de faire et qui est assez porpre...

    sinon tu peux executer les commandes SQL en live en remplaçant juste les valeurs par les variables sans passer par un script sql mais c'est bien plus crado...comme concept


    attention à bien quoter les variables ! si tu fais la version porcasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ mysql -u root -p -h undertaker << EOT     
    > use perso
    > select * from ordinateurs where ref="${VARIABLE_i_ISSUEDUSHELL}" ;
    > exit
    > EOT
    Enter password: 
    ref     n_proc  type_proc       ram     model            commentaires    os
    12      4       hypersparc      512     sparcstation 20           50      Solaris
    $
    en plus là c'est mega-porcin puisque je connecte direct root@marvin !!!!! c'est interdit par définition le root de mysql ne doit jamais servir à utiliser les données !!!!!!!

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Si la structure du fichier txt est strictement compatible avec celle de ta bdd, suis le lien donné plus haut. Il est infiniment plus rapide d'utiliser LOAD DATA INFILE plutôt qu'une suite de INSERT.

    Pour la syntaxe du shell, j'utilise simplement l'option -e du client mysql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    QRY="
    SELECT id, nom, localite
    FROM ma_table
    WHERE id='12345'"
     
    mysql -u **** -p -e "$QRY"

  5. #5
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    ce qui concrètement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QRY="insert into toto values('/tmp/test','$(cat /tmp/test)');" ; mysql -u USER -p -e "$QRY" BASE
    QRY="select * from BASE.toto;" ; mysql -u USER -p -e "$QRY" BASE
    +-----------+----------------------------+
    | file      | content                    |
    +-----------+----------------------------+
    | /tmp/test | ceci est un putain de test | 
    +-----------+----------------------------+
    QRY="drop table toto;" ; mysql -u USER -p -e "$QRY" BASE
    rm /tmp/test

Discussions similaires

  1. Problème avec MySQL++ sous VC++
    Par hassan2010 dans le forum C++
    Réponses: 0
    Dernier message: 22/04/2010, 13h52
  2. Problème avec select sous MYSQL
    Par Thomad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/01/2006, 11h26
  3. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33
  4. Problème avec glutFullScreen() sous linux...
    Par MaxPayne dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/11/2004, 11h30
  5. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02

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