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 262
    Points
    12 262
    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.

  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