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 POSIX Discussion :

Récupération de valeurs a partir d'un fichier texte


Sujet :

Shell et commandes POSIX

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 49
    Points
    49
    Par défaut Récupération de valeurs a partir d'un fichier texte
    Bonjour,

    Je ne maitrise pas du tout le shell script unix, simplement j'aimerai scripter un shell script utilisant des ordres sql qui devront s'appuyer sur une liste de table présent dans un fichier texte a part. Est ce possible ?
    Le but étant de n'avoir jamais a modifier le script mais uniquement le fichier texte contenant le nom des tables.
    Merci de me donner quelques pistes, j'ai les commandes sql prêtes mais concernant le shell je suis un peu perdu.
    Merci pour vos réponses.


  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 264
    Points
    12 264
    Par défaut
    Citation Envoyé par D_light Voir le message
    Bonjour,

    Je ne maitrise pas du tout le shell script unix, simplement j'aimerai scripter un shell script utilisant des ordres sql qui devront s'appuyer sur une liste de table présent dans un fichier texte a part. Est ce possible ?


    oui bien sur

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/sh 
    # chargement des variables
    # ....
    while read 
    do
    sqlinterpreteur $USER $PASSWORD -e "select * from $REPLY ; "
    done < fichier_reference.txt
    # ...
    # autres traitements
    exit 0
    en gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while read
    ...
    done < fichier
    fait une iteration par ligne ; le contenu de la ligne de fichier est chargé dans la variable $REPLY que tu peux faire utiliser à ton interpreteur SQL

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Merci a vous frp31, possedant des bases tout de même en algo je comprend ce qui est fait par contre a la place de sqlinterpreteur dans votre script ?
    Je bosse sur Postgresql je metterai quoi a la place ?

    L'argument -e sert a ?

    Ce bout de script va me servir pour récupérer les ordres de création de ces objets, donc c'est bien cool dans un premier temps.

    Maintenant j'ai l'outil pg_dump qui me sert a exporter en ligne de commande unix l'ensemble des tables que je lui indique, dans le même ordre d'idée l'argument precedent le nom des tables est -t.
    Par contre il ne faut pas ici que je lance la commande x fois pour recup autant de fichiers export qu'il y de tables indiquées mais il faut que la variable contienne l'ensemble des noms de tables directement contrairement a l'exemple précedent.
    Donc il faudrai que je trouve un moyen dans un shell script d'avoir une variable qui recup l'ensemble des noms de tables en faisant un append a chaque fois plutot que d'effacer la valeur précédente comme le ferai une boucle while simple ?

    Une idée de départ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/bin/sh
    # chargement des variables
    # $TABLES
    while read
    do
    $TABLES=$TABLES+$REPLY
    done < tables.txt
    pg_dump -Fp opsnetv3 -s -t $TABLES -f /home/xxx/xxx.out
    exit 0

    Merci du coup de main.

  4. #4
    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 264
    Points
    12 264
    Par défaut
    Citation Envoyé par D_light Voir le message
    Merci a vous frp31, possedant des bases tout de même en algo je comprend ce qui est fait par contre a la place de sqlinterpreteur dans votre script ?
    Je bosse sur Postgresql je metterai quoi a la place ?
    j'en sais rien là c'est à toi de voir avec postgresql
    L'argument -e sert a ?
    dans l'exemple pour inserer directement une commande SQL mais ça dépand intégralement de ton interpreteur, donc à voir en fonction de postgresql


    Ce bout de script va me servir pour récupérer les ordres de création de ces objets, donc c'est bien cool dans un premier temps.

    Maintenant j'ai l'outil pg_dump qui me sert a exporter en ligne de commande unix l'ensemble des tables que je lui indique, dans le même ordre d'idée l'argument precedent le nom des tables est -t.
    Par contre il ne faut pas ici que je lance la commande x fois pour recup autant de fichiers export qu'il y de tables indiquées mais il faut que la variable contienne l'ensemble des noms de tables directement contrairement a l'exemple précedent.
    Donc il faudrai que je trouve un moyen dans un shell script d'avoir une variable qui recup l'ensemble des noms de tables en faisant un append a chaque fois plutot que d'effacer la valeur précédente comme le ferai une boucle while simple ?
    en fonction du shell que tu utilises il faut voir la concatenation de chaines ou alors alimenter une variable tableau au choix...


    Une idée de départ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/bin/sh
    # chargement des variables
    # $TABLES
    while read
    do
    $TABLES=$TABLES+$REPLY
    done < tables.txt
    pg_dump -Fp opsnetv3 -s -t $TABLES -f /home/xxx/xxx.out
    exit 0

    Merci du coup de main.
    à priori oui ça pourrai ressembler à ça, pour la structure.

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    J’ai un petit soucis pour un bout de code peut être que vous allez pouvoir m’aider (rien de bien positif jusque la) :

    Donc j’ai un fichier source ou sont indiqués le nom des tables ici j’en ai 2 :

    public.dicoobjectifciblagedommagescollate
    public.dicoaffectationressourceetat

    J’ai un script récupérant ces données pour effectuer un dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/bin/sh
    # chargement des variables
    export DIRECTORY=/xxxxxxxxxxxx
    export SCHEMA=opsnetv3
    cat $DIRECTORY/tables.txt | while read
    do
    export TABLES="$TABLES -t $REPLY"
    done
    echo $TABLES
    pg_dump $SCHEMA –Fp $TABLES -f $DIRECTORY/ddltables.sql
    exit 0
    Si je l’execute avec l’argument –x il ne va pas me prendre convenablement la variable $TABLES dans l’ordre pg_dump alors que l’on voit bien ci-dessous qu’elle est correctement renseigné, par contre la variable $SCHEMA pas de soucis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [postgres@xxxxx testmigration]$ ksh -x test2.ksh
    + export DIRECTORY=/xxxxxxxxx
    + export SCHEMA=opsnetv3
    + export TABLES
    + cat /xxxxxxxxxxx/tables.txt
    + read
    + export TABLES= -t public.dicoobjectifciblagedommagescollate
    + read
    + export TABLES= -t public.dicoobjectifciblagedommagescollate -t public.dicoaffectationressourceetat
    + read
    + echo
     
    + pg_dump opsnetv3 -Fp -f /xxxxxxxxxx/ddltables.sql
    La commande pg_dump fonctionne normalement en dehors du script.

    Si vous aviez une idée ? j’avou ne pas trop savoir d’où provient le probléme.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/03/2009, 04h17
  2. Réponses: 2
    Dernier message: 16/03/2008, 18h15
  3. récupération de données à partir d'un fichier texte
    Par ludol59 dans le forum Bibliothèque standard
    Réponses: 9
    Dernier message: 23/01/2008, 21h04
  4. Réponses: 23
    Dernier message: 14/08/2007, 14h39
  5. Récupération automatique d'images à partir d'un fichier vidéo
    Par osscour dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 15/05/2006, 09h11

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