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 :

join - jointure de 2 fichiers csv et resultat dependant du range de clefs utilisees?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut join - jointure de 2 fichiers csv et resultat dependant du range de clefs utilisees?
    Bonjour,

    J'utilise la commande join pour effectuer une jointure entre 2 fichiers csv.
    La jointure se fait par rapport à la 1ere colonne de ces 2 fichiers.

    exemple1

    fichier1.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    6,marie
    7,amelie
    9,nicolas
    18,sandra
    21,mathieu
    22,cindy
    23,julien
    fichier2.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    0,comptable
    1,control qualite
    2,dba
    3,patron
    4,commercial
    5,secretaire
    6,administrateur
    7,technicien
    8,patisssier
    9,boulanger
    10,plombier
    11,electicien
    12,commercial
    13,instituteur
    14,pharmacien
    15,chirurgien
    16,directeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    join -t ',' -j1 1 -j2 1 -o 1.2,2.2 fichier1.csv fichier2.csv > fichier3.csv ; cat fichier3.csv

    J'obtiens bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    marie,administrateur
    amelie,technicien
    nicolas,boulanger
    exemple2

    Maintenant, avec les fichiers

    fichier1.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    116,marie
    880,amelie
    880,nicolas
    6261,sandra
    8687,mathieu
    11111,cindy
    99999,julien
    fichier2.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    0,comptable
    1,control qualite
    2,dba
    3,patron
    4,commercial
    5,secretaire
    6,administrateur
    7,technicien
    8,patisssier
    9,boulanger
    880,plombier
    900,electicien
    100,commercial
    500,instituteur
    1000,pharmacien
    10000,chirurgien
    11111,directeur
    Même commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    join -t ',' -j1 1 -j2 1 -o 1.2,2.2 fichier1.csv fichier2.csv > fichier3.csv ; cat fichier3.csv
    Je n'obtiens rien?

    Je m'attendais à avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    amelie,plombier
    nicolas,plombier
    cindy,directeur
    La seule différence est pourtant seulement le range des clefs utilisées pour la jointure. Je croyait que la seule containte était d'avoir des clefs ordonnées? Y a-t-il une containte supplémentaire sur les clefs de jointur epour utiliser la commande join?

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Ceci est lié au trie des informations dans vos fichiers :
    fichier1.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    11111,cindy
    116,marie
    6261,sandra
    8687,mathieu
    880,amelie
    880,nicolas
    99999,julien
    fichier2.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    0,comptable
    10000,chirurgien
    1000,pharmacien
    100,commercial
    11111,directeur
    1,control qualite
    2,dba
    3,patron
    4,commercial
    500,instituteur
    5,secretaire
    6,administrateur
    7,technicien
    880,plombier
    8,patisssier
    900,electicien
    9,boulanger
    Le resultat de votre commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    join -t ',' -j1 1 -j2 1 -o 1.2,2.2 fichier1.csv fichier2.csv
    donne le resultat souhaité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cindy,directeur
    amelie,plombier
    nicolas,plombier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Merci beaucoup Argoet

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

Discussions similaires

  1. Framework manager : jointure fichier csv
    Par stefgef dans le forum Cognos
    Réponses: 6
    Dernier message: 06/04/2013, 00h16
  2. Jointure fichiers csv dans Sunopsis
    Par TofMand25 dans le forum ODI (ex-Sunopsis)
    Réponses: 5
    Dernier message: 26/09/2012, 07h46
  3. Réponses: 1
    Dernier message: 17/06/2009, 10h19
  4. Ajouter une colonne à un fichier csv contenant les resultats d'un calcul
    Par Freedd dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 31/07/2008, 12h01
  5. resultat d'une requete dans un fichier csv
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/09/2005, 21h14

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