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 :

CSV ajout d'une colonne ?


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    CSV ajout d'une colonne ?
    Bonjour,

    J'aimerais faire un assemblage de colonne (de plusieurs fichiers CSV en un seul fichier)

    Exemple :
    - Mon premier fichier csv
    Computer, Address, Name
    HostName,127.0.0.1, TOTO

    - Mon deuxième fichier csv
    Computer, Address, LastName
    HostName,127.0.0.1,LastName

    et mon fichier final devrait être :
    Computer, Address, Name, LastName
    HostName,127.0.0.1, TOTO, LastName

    Il y a plusieurs lignes dans un fichier et il y a plusieurs fichiers ...

    Pour information chaque ligne correspond a la ligne des autres fichiers
    exemple : le hostname a la ligne 35 correspondra forcement a la ligne 35 d'un autre fichier

    J'ai bien réussi a récupéré la dernière colonne de chaque fichier mais j'ai un problème de performance sur les assemblages de fichier
    j'ai testé ça : https://stackoverflow.com/questions/...ows-powershell
    mais ça ne fonctionne pas trop, il me met dans la derniere colonne toutes les données de la colonne du fichier sur chaque ligne.

    Je pense qu'il est inutile de vous donnez le code que j'ai fait car il n'est vraiment pas pas performant, style pour 5 fichiers avec 5000 lignes ça met 1h20 de traitement ... pas génial ...

  2. #2
    Expert confirmé
    Je ne comprend pas trop le problème, il suffit de faire ce que l'on dit.
    Avec tes fichiers d'exemple je n'ai pas de problème de performance.

    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
    $i1 = Import-Csv -Path "1.csv" -Encoding Default
    $i2 = Import-Csv -Path "2.csv" -Encoding Default
     
    $items = @()
     
    for ($i=0 ; $i -lt $i1.count ; $i++)
    {
        $items += [PSCustomObject]@{
            Computer = $i1[$i].Computer
            Address = $i1[$i].Address
            Name = $i1[$i].Name
            LastName = $i2[$i].LastName
        }
    }
     
    $items | Export-Csv -Path "result.csv" -NoTypeInformation


    PS : Vous avez quoi avec les espaces dans les en-têtes des fichiers CSV, vous faite de la mise en forme ?

###raw>template_hook.ano_emploi###