Comment combiner des fichiers CSV dans PowerShell
-
Le format
CSV -
Filtrer les fichiers
.csvdans PowerShell -
Récupérer chaque object de fichier
.csven PowerShell - Fusionner le contenu des fichiers CSV en PowerShell
- Écrire le contenu fusionné dans un fichier texte en PowerShell
Il peut y avoir un besoin de fusionner plusieurs fichiers CSV et d’écrire les données dans un fichier texte en PowerShell. Les cmdlets Import-Csv et Export-Csv peuvent être utilisées pour effectuer cette opération.
Le format CSV
Il existe divers types de formats de fichiers disponibles pour différents usages. Le CSV utilise une structure simple pour stocker des données.
Il peut être utilisé pour échanger des données entre différents programmes. Comme son nom CSV (valeurs séparées par des virgules) l’indique, les données sont séparées par des virgules.
Les informations stockées dans un fichier CSV ressemblent à ceci :
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 allons fusionner en utilisant PowerShell.

Contenu de username.csv :

Contenu de username2.csv :

Filtrer les fichiers .csv dans PowerShell
Il est recommandé d’utiliser la cmdlet Get-ChildItem pour récupérer tous les types de fichiers .csv dans 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 variable $csvFileList.
$csvFileList
Sortie :

Récupérer chaque object de fichier .csv en PowerShell
Récupérons chaque objet de fichier avec son nom complet. La cmdlet Select-Object peut être utilisée pour récupérer chaque objet avec ses propriétés étendues.
Nous envoyons la sortie de l’étape précédente à la commande Select-Object.
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
Lorsque vous affichez la variable $csfFilesToImport, il peut être vu que les deux objets de fichier CSV sont disponibles avec le nom complet.
$csfFilesToImport
Sortie :

Fusionner le contenu des fichiers CSV en PowerShell
Puisque nous avons obtenu 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 Import-CSV pour construire des objets en forme de tableau à partir des contenus de fichiers CSV envoyés.
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
Sortie :

Les informations ont été fusionnées à partir des deux fichiers CSV fournis.
Écrire le contenu fusionné dans un fichier texte en PowerShell
Nous pouvons transformer les objets ci-dessus en chaînes CSV et les enregistrer dans un fichier texte. La cmdlet Export-Csv est disponible à utiliser.
Nous devrions utiliser le paramètre Append pour s’assurer que le contenu n’est pas remplacé et est ajouté.
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
Sortie :
Cela devrait créer un nouveau fichier texte appelé merged.txt. Le contenu de ce fichier serait fusionné à partir des deux fichiers CSV ci-dessus.

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.
