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

Scripts/Batch Discussion :

Jointure dans des fichiers CSV


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut Jointure dans des fichiers CSV
    Bonjour,

    Je démarre en Powershell et je dois effectuer les actions suivantes sur 3 fichiers CSV.
    Je vous explique :
    - Fichier 1:
    A,B,C,D
    Paul,28,Rouge,Homme
    Jean,35,Vert,Homme
    - FIchier 2 :
    E,F,J,
    Paul,180,chat
    Jean,175,chien
    - Fichier3:
    H,I,J,K
    Paul,France, Lyon,avion
    Jean,,,Bus
    Jean,Italy,,
    Je dois récupérer un nouveau fichier avec des jointure et obtenir :
    Paul,28,vert,Homme,180,chat,France,Lyon,avion
    Pouvez-vous me dire comment je dois m'y prendre en powershell ?
    Merci et bonnes fetes

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Tout d’abord, je ne comprend pas comment c'est possible Paul,35,...

    Si on doit faire une jointure entre ces 3 fichiers quel est le critère de jointure ? Numéro de ligne ? Prénom (jamais de doublon ?) ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Par défaut Jointure dans des fichiers CSV en PowerShell
    Bonjour Eric,

    Bien vu, j'ai fait une erreur.


    La jointure doit se faire au niveau de l'entête A (Fichier1) et E(Fichier2) et H(fichier3).

    F1:
    A,B,C,D, ID
    Jean,28, Homme,celibataire,001

    F2:
    E,F,J,ID
    Jean,voiture,rouge,001

    ....

    On ne peut pas avoir des doublons car il y a un ID unique que j'ai oublié de préciser dans chaque le fichier

    Merci pour ton aide Eric.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    H,I,J,K
    Paul,France, Lyon,avion
    Jean,,,Bus
    Jean,Italy,,
    Ici il y a 2 Jean, c'est normal ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    F2:
    E,F,J,ID
    Jean,voiture,rouge,001
    Ca devrait pas plutôt être E,F,G,ID ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    J'ai considéré que j'avais raison.
    Je t'ai fait un truc assez moche mais qui fonctionne même avec ton doublon d'ID comme dans ton exemple. Si tu est sur de ne pas avoir de doublon tu peux assigner directement la valeur en supprimant les if (![string]::IsNullOrEmpty($_.*)) {}

    Code powershell : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    $i1 = Import-Csv -Path "1.csv"
    $i2 = Import-Csv -Path "2.csv"
    $i3 = Import-Csv -Path "3.csv"
     
    $IDs = ($i1.ID + $i2.ID + $i3.ID) | Select-Object -Unique
     
    $items = @()
     
    foreach($id in $IDs)
    {
        $item = [PSCustomObject]@{
            ID = $id
     
            A = ''
            B = ''
            C = ''
            D = ''
     
            E = ''
            F = ''
            G = ''
     
            H = ''
            I = ''
            J = ''
            K = ''
        }
     
        $i1 | Where-Object {$_.ID -eq $id} | ForEach-Object {
            if (![string]::IsNullOrEmpty($_.A))
            {
                $item.A = $_.A
            }
            if (![string]::IsNullOrEmpty($_.B))
            {
                $item.B = $_.B
            }
            if (![string]::IsNullOrEmpty($_.C))
            {
                $item.C = $_.C
            }
            if (![string]::IsNullOrEmpty($_.D))
            {
                $item.D = $_.D
            }
        }
     
        $i2 | Where-Object {$_.ID -eq $id} | ForEach-Object {
            if (![string]::IsNullOrEmpty($_.E))
            {
                $item.E = $_.E
            }
            if (![string]::IsNullOrEmpty($_.F))
            {
                $item.F = $_.F
            }
            if (![string]::IsNullOrEmpty($_.G))
            {
                $item.G = $_.G
            }
        }
     
        $i3 | Where-Object {$_.ID -eq $id} | ForEach-Object {
            if (![string]::IsNullOrEmpty($_.H))
            {
                $item.H = $_.H
            }
            if (![string]::IsNullOrEmpty($_.I))
            {
                $item.I = $_.I
            }
            if (![string]::IsNullOrEmpty($_.J))
            {
                $item.J = $_.J
            }
            if (![string]::IsNullOrEmpty($_.K))
            {
                $item.K = $_.K
            }
        }
     
        $items += $item
    }
     
    $items | Export-Csv -Path "result.csv" -NoTypeInformation

    result.csv
    "ID","A","B","C","D","E","F","G","H","I","J","K"
    "001","Paul","28","Rouge","Homme","Paul","180","chat","Paul","France","Lyon","avion"
    "002","Jean","35","Vert","Homme","Jean","175","chien","Jean","Italy","","Bus"

Discussions similaires

  1. Vérification intégrité de données décrites dans des fichiers csv
    Par xino972 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 15/07/2019, 15h11
  2. Problème boucle php dans des fichiers csv
    Par lefi0528 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2016, 14h52
  3. Réponses: 5
    Dernier message: 30/01/2012, 18h38
  4. Récuperation des donnees dans un fichier .csv
    Par HMorvan dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 22h27
  5. Réponses: 12
    Dernier message: 27/01/2006, 11h07

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