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 :

Script shell avec une requête sql


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut Script shell avec une requête sql
    Bonjour tout le monde,

    Between '01/02/2014" and '10/02/2014'

    je voudrai faire un script pour lancer une extraction selon un jour donné

    par exemple pour ne pas toucher a la requête et lancer un script ( lui dire de faire la date 01/12/2013 ) .

    merci beaucoup pour vos suggestion.

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ date='2014-01-01'
    $ pass=******** #le password, bien sur, donc la je remplace par des  *                        
    $  mysql -u root -p$pass perso << EOT      
    > select * from gazoil where date>=$date ; 
    > EOT     
          2014-01-02      55.45   616
          2014-01-10      59.98   771
    $

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "select * from table where date between '01/02/2014' and '10/02/2014' order by ..." |mysql # ou bien |psql bref mettre ici le client sql utilisé avec tous ses paramètres...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    host="server"
    db="database"
    user="xy"
    pass="xxxxxx"
    statement="select * from gazoil where date>=$date"
    mysql --host="$host" --database="$db" --user="$user" --password="$pass" --execute="$statement"

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    host="server"
    db="database"
    user="xy"
    pass="xxxxxx"
    statement="select * from gazoil where date>=$date"
    mysql --host="$host" --database="$db" --user="$user" --password="$pass" --execute="$statement"
    Ce n'est pas forcément mysql son client...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    Merci bcp pour vos réponses.

    En effet le but c'est :

    Cest juste un script shel pour modifier la date de la requéte et plus précisément le between 'jj/mm/yyyy' and 'jj/mm/yyyy'

    par exemple lancer le script avec en entré l'intervalle de la date 'jj/mm/yyyy' and 'jj/mm/yyyy' qui va modifier la requête automatiquement qui se trouve dans le répertoire /tmp/req.sql ( le but ne pas toucher a la requête )

    BDD : Oracle sous Linux
    Avez-vous une idée là-dessus !

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ datel=2012-01-01                            
    $ dateh=2015-01-01 
    $ sed 's/een.*;/een '$datel' and '$dateh' ; /' /tmp/req.sql
    select * from table where date between 2012-01-01 and 2015-01-01 ; 
    $ cat /tmp/req.sql                                        
    select * from table where date between 2013-01-01 and 2014-01-01 ;
    $
    ce qui donnerai en script minimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    datel=$1
    dateh=$2
    sed 's/een.*;/n '$datel' and '$dateh' ; /' /tmp/req.sql | sqlplus #options de connections
    #....
    comme ça tu ne touches pas a ta requette d'origine tout en changeant ces valeurs pour l'execution encours.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Points : 0
    Points
    0
    Par défaut
    Merci bcp bcp

    derniére question

    je laisse la requéte d'origine telle quelle , je ne change rien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat /tmp/req.sql
     
    select num,nom,ville,pays from client where date between 2013-01-01 and 2014-01-02
    le SED va changer la date sans variable ?

    Avez-vous une idée ?

    Merci encore une fois

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/een.*;/n '$datel' and '$dateh' ; /' /tmp/req.sql
    l’intérêt de cette méthode est justement de ne pas toucher le fichier mais de quand même changer les valeurs passées à sqlplus...

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/10/2009, 09h37
  2. Réponses: 4
    Dernier message: 11/06/2009, 16h03
  3. Réponses: 6
    Dernier message: 23/04/2007, 15h21
  4. [MySQL] Problème avec une requête SQL
    Par chobol dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/05/2006, 12h29
  5. [VB]Problème avec une requête SQL
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/03/2006, 17h47

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