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 :

procedure shell avec awk pour mise à jour d'une table d'une base de données oracle


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut procedure shell avec awk pour mise à jour d'une table d'une base de données oracle
    Bonjour,
    je suis debutant et je souhaite ecrire une procedure pour mettre

    Je cherche à écrire une procédure à exécuter sous unix comme suit
    Pour chaque ligne de la table IdentifiantPersonne
    pour chaque ligne de la table IdentifiantPersonne
    si (nom, prénom) = (nom,prénom) de la ligne correspondante de la table PersonneConnu
    alors ecrire le champ de la colonne langue de IdentifiantPersonne dans la colonne clangue de PersonneConnu

    Exemple: Les 2 table n'ont pas de cle commun

    Table PersonneConnu

    N° Nom Prenom Age Metier Clangue
    1 Dupont Alain 22 Serveur
    2 Marie Tata 36 medecin
    3 Louis thomas 28 Ecrivain
    4 Flaure Laure 16 eleve
    5 Dupont Julien 36 medecin
    6 Duval Come 25 etudiant


    Table IdentifiantPersonne

    ident Nom Prenom age Fonction langue
    A Dupont Alain 50 Serveur Paris
    B Marie Tata 36 medecin Paris
    C Louis thomas 28 Ecrivain rome
    D Flaure pauline 15 eleve amsterdam
    E Coco Julien 36 medecin rome
    F Duval Come 22 etudiant paris
    pour ident =A et N° = 1 (nom, prenom) =(Dupont Alain) premiere ligne des 2 tables alors j'ecris 'Paris' dans la colonne Clangue

    resultat attendu:avec la procedure

    N° Nom Prenom Age Metier Clangue
    1 Dupont Alain 22 Serveur Paris
    2 Marie Tata 36 medecin
    3 Louis thomas 28 Ecrivain
    4 Flaure Laure 16 eleve
    5 Dupont Julien 36 medecin
    6 Duval Come 25 etudiant
    Quelqu'un pourrait m'aider et merci d'avance

  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
    ne serai t il pas plus simple et sourtout moins risque en terme d'erreur potentielle de faire un script SQL plustot qu'un shell qui appelle ensuite un sqlplus ?

  3. #3
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Oui, je suis d'accord avec frp31, mieux vaut écrire une procedure plsql qui te permettra d'avoir le resultat attendu plutot qu'un script shell.
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    oui, soit tu as des fichiers,
    ==> personneconnu <==
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1 Dupont Alain 22 Serveur
    2 Marie Tata 36 medecin
    3 Louis thomas 28 Ecrivain
    4 Flaure Lauaurablre 16 eleve
    5 Dupont Julien 36 medecin
    6 Duval Come 25 etudiant
    ==> identifiantpersonne <==
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A Dupont Alain 50 Serveur Paris
    B Marie Tata 36 medecin Paris
    C Louis thomas 28 Ecrivain rome
    D Flaure pauline 15 eleve amsterdam
    E Coco Julien 36 medecin rome
    F Duval Come 22 etudiant paris
    dans ce cas là tu peux utiliser join
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ join -1 2,3 -2 2,3 -a 2 -o 2.1,2.2,2.3,2.4,2.5,1.6 identifiantpersonne personneconnu
    1 Dupont Alain 22 Serveur Paris
    2 Marie Tata 36 medecin Paris
    3 Louis thomas 28 Ecrivain
    4 Flaure Laure 16 eleve
    5 Dupont Julien 36 medecin
    6 Duval Come 25 etudiant
    si tu as des tables oracle, un simple JOIN sur nom,prenom devrait résoudre ton problème

Discussions similaires

  1. [PowerShell] CSV avec CRLF pour mise à jour AD
    Par djram82 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 05/06/2015, 10h16
  2. [AC-2003] Requête mise à jour d'un champ d'une Table dans plusieurs bases ACCESS
    Par alainfbsi dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/05/2013, 20h35
  3. Réponses: 12
    Dernier message: 30/11/2009, 00h12
  4. mise à jour massive des tables entre 2 bases oracle
    Par rihojaniero dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2006, 08h22
  5. Mise à jour en temps réel de la base de données
    Par Clotilde dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/06/2004, 22h09

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