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 :

Fusion de deux fichiers CSV [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 322
    Par défaut Fusion de deux fichiers CSV
    Bonjour

    je souhaite fusionner 2 fichiers csv

    un fichier mois_courant.csv de 20 000 ko
    un fichier histo.csv de 510 000 ko

    lorsque je lance mon script 2 phénomènes se produisent

    le fichier généré global.csv fait 1 610 000 ko, pourquoi une telle différence ?

    dans le fichier global.csv les 2 fichiers sont séparés d'une ligne vide l'entête du deuxième n'a pas été prise en compte.
    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
    $getFirstLine = $true
    get-childItem "C:\TEMP\*.csv" | foreach {
        $filePath = $_
     
        $lines = Get-Content $filePath  
        $linesToWrite = switch($getFirstLine) {
               $true  {$lines}
               $false {$lines | Select -Skip 1}
     
        }
     
        $getFirstLine = $false
        Add-Content "C:\TEMP\GLOBAL.csv" $linesToWrite
        }

  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
    Hello,

    Tes fichiers CSV ont les mêmes en-tête ?
    Si oui tu fait 2 imports une fusion et un export

    Tu peux aussi importer le fichier mois_courant.csv et l'ajouter à histo.csv facilement en utilisant le paramètre Append de la cmdlet Export-Csv

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 322
    Par défaut
    comment gérer avec la commande Append de la cmdlet Export-Csv la gestion de la suppression de l'entete du deuxieme fichier ?

    dans mon cas j'ai le fichier historique beaucoup plus gros, il vaut mieux ajouter le courant sur histo ou ca n'a pas d'importance

  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
    Il va gérer tout seul les en-têtes si les 2 fichier sont cohérent (d’où la question Tes fichiers CSV ont les mêmes en-tête ?)

    Il vaut mieux ajouter le plus petit mois_courant.csv dans histo.csv , c'est mieux techniquement et logiquement

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 322
    Par défaut
    j'ai essayé le code suivant j'obtiens un message d'erreur

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Filter C:\TEMP\*.csv | Select-Object -ExpandProperty FullName | Import-Csv | Export-Csv C:\TEMP\Global.csv -NoTypeInformation -Append

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Get-ChildItem : La seconde partie d'un chemin d'accès ne doit pas être un 
    lecteur ou un nom UNC.
    Nom du paramètre*: path2
    Au caractère Ligne:2 : 1
    + Get-ChildItem -Filter C:\TEMP\*.c ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (C:\TEMP 
       :String) [Get-ChildItem], ArgumentException
        + FullyQualifiedErrorId : DirArgumentError,Microsoft.PowerShell.Commands.G 
       etChildItemCommand

  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
    Je dirai comme ceci (même si je ne comprends pas le message d'erreur dans ce contexte)
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Path C:\TEMP\*.csv | Select-Object -ExpandProperty FullName | Import-Csv | Export-Csv C:\TEMP\Global.csv -NoTypeInformation -Append

  7. #7
    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
    Tu va avoir un problème puisque ton export se trouve dans le même dossier que les autres csv

    Tu a vraiment plusieurs csv à ajouter a global.csv ?

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 322
    Par défaut
    2 fichiers : current.csv 20 Mo et Histo.csv 510 MO le temps de "fusion" est vraiment tres long.

    J'obtiens un fichier global.csv de 2 giga

  9. #9
    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
    Je ferai simplement ceci
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Import-Csv -Path "C:\TEMP\current.csv" | Export-Csv "C:\TEMP\Global.csv" -NoTypeInformation -Append

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 322
    Par défaut
    super ca marche c'est long mais cela fonctionne

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

Discussions similaires

  1. [PowerShell] powershell: redirection dans un fichier csv
    Par robbydan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 14/12/2015, 09h17
  2. [PowerShell] [PowerShell]Utiliser une colonne d'un fichier csv
    Par Léponge85 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 26/02/2009, 11h54
  3. Fusion de fichier csv
    Par malox dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 26/05/2008, 12h19
  4. Fusion de fichiers .csv et comparaison avec fichier .xls
    Par GourenBZH dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/04/2008, 14h15
  5. [CSV] Ajout/fusion de valeurs de fichiers csv
    Par dcanl dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2007, 09h51

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