Combiner des fichiers CSV en PowerShell

Migel Hewage Nimesha 30 janvier 2023
  1. Le format CSV
  2. Filtrer les fichiers .csv dans PowerShell
  3. Récupérer chaque objet de fichier .csv dans PowerShell
  4. Fusionner le contenu des fichiers CSV dans PowerShell
  5. Écrire le contenu fusionné dans un fichier texte dans PowerShell
Combiner des fichiers CSV en PowerShell

Il peut être nécessaire de fusionner plusieurs fichiers CSV et d’écrire les données dans un fichier texte dans PowerShell. Les cmdlets Import-Csv et Export-Csv peuvent être utilisées pour effectuer cette opération.

Le format CSV

Il existe différents types de formats de fichiers disponibles à des fins différentes. Le CSV utilise une structure simple pour stocker les données.

Il peut être utilisé pour échanger des données entre différents programmes. Comme son nom CSV(comma-separated values) l’indique, les données sont séparées par des virgules.

Les informations stockées dans un fichier CSV ressemblent à ce qui suit.

UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson

Le délimiteur peut être un espace, un point-virgule ou tout autre caractère.

Créons deux fichiers csv que nous fusionnerons à l’aide de PowerShell.

Fichiers CSV

Contenu de username.csv :

nom d’utilisateur fichier CSV

Contenu de username2.csv :

nom d’utilisateur2 fichier CSV

Filtrer les fichiers .csv dans PowerShell

Il est recommandé d’utiliser l’applet de commande Get-ChildItem pour récupérer tous les types de fichiers .csv à l’emplacement spécifié. Le paramètre -Filter peut être passé pour filtrer les fichiers avec l’extension .csv.

Le chemin du dossier vers les fichiers .csv peut être différent dans votre cas.

$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv

Vérifions le contenu disponible dans la $csvFileList.

$csvFileList

Production:

Filtrer les fichiers CSV dans PowerShell

Récupérer chaque objet de fichier .csv dans PowerShell

Récupérons chaque objet fichier avec son nom complet. L’applet de commande Select-Object peut être utilisée pour récupérer chaque objet avec ses propriétés développées.

Nous dirigeons la sortie de l’étape précédente vers la commande Select-Object.

$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName

Lorsque vous affichez la variable $csfFilesToImport, on constate que les deux objets fichier CSV sont disponibles avec le nom complet.

$csfFilesToImport

Production:

Récupérer chaque objet de fichier CSV dans PowerShell

Fusionner le contenu des fichiers CSV dans PowerShell

Puisque nous avons tous les fichiers CSV, importons le contenu de chaque fichier. Cela fusionnerait facilement le contenu avec une ligne d’en-tête commune.

Nous pouvons utiliser le Import-CSV pour construire des objets de type table à partir du contenu du fichier CSV canalisé.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Production:

Fusionner le contenu des fichiers CSV dans PowerShell

Les informations ont été fusionnées à partir des deux fichiers CSV fournis.

Écrire le contenu fusionné dans un fichier texte dans PowerShell

Nous pouvons transformer les objets ci-dessus en chaînes CSV et les enregistrer dans un fichier texte. L’applet de commande Export-Csv est disponible.

Nous devons utiliser le paramètre Append pour nous assurer que le contenu n’est pas remplacé et ajouté.

$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append

Production:

Cela devrait créer un nouveau fichier texte appelé merged.txt. Ce contenu de fichier serait fusionné à partir des deux fichiers CSV ci-dessus.

Écrire le contenu fusionné dans un fichier texte dans PowerShell

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Article connexe - PowerShell CSV