Kombinieren von CSV-Dateien in PowerShell

Migel Hewage Nimesha 30 Januar 2023
  1. Das CSV-Format
  2. Filtern der .csv-Dateien in PowerShell
  3. Rufen Sie jedes .csv-Dateiobjekt in PowerShell ab
  4. Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen
  5. Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell
Kombinieren von CSV-Dateien in PowerShell

Es kann erforderlich sein, mehrere CSV-Dateien zusammenzuführen und die Daten in eine Textdatei in PowerShell zu schreiben. Für diesen Vorgang können die Cmdlets Import-Csv und Export-Csv verwendet werden.

Das CSV-Format

Es stehen verschiedene Arten von Dateiformaten für unterschiedliche Zwecke zur Verfügung. Die CSV verwendet eine einfache Struktur, um Daten zu speichern.

Es kann verwendet werden, um Daten zwischen verschiedenen Programmen auszutauschen. Wie der Name CSV (comma-separated values) andeutet, werden Daten durch Kommas getrennt.

Die in einer CSV-Datei gespeicherten Informationen sehen wie folgt aus.

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

Das Trennzeichen kann ein Leerzeichen, ein Semikolon oder ein beliebiges anderes Zeichen sein.

Lassen Sie uns zwei csv-Dateien erstellen, die wir mit PowerShell zusammenführen.

CSV-Dateien

username.csv-Inhalt:

username CSV-Datei

username2.csv Inhalt:

username2 CSV-Datei

Filtern der .csv-Dateien in PowerShell

Es wird empfohlen, das Cmdlet Get-ChildItem zu verwenden, um alle .csv-Dateitypen am angegebenen Speicherort abzurufen. Der Parameter -Filter kann übergeben werden, um die Dateien mit der Erweiterung .csv zu filtern.

Der Ordnerpfad zu den .csv-Dateien kann in Ihrem Fall anders sein.

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

Lassen Sie uns den verfügbaren Inhalt in der $csvFileList überprüfen.

$csvFileList

Ausgabe:

Filtern Sie die CSV-Dateien in PowerShell

Rufen Sie jedes .csv-Dateiobjekt in PowerShell ab

Rufen wir jedes Dateiobjekt mit seinem vollständigen Namen ab. Mit dem Cmdlet Select-Object kann jedes Objekt mit seinen erweiterten Eigenschaften abgerufen werden.

Wir leiten die Ausgabe des vorherigen Schritts an den Befehl Select-Object weiter.

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

Wenn Sie die Variable $csfFilesToImport anzeigen, können Sie sehen, dass beide CSV-Dateiobjekte mit dem vollständigen Namen verfügbar sind.

$csfFilesToImport

Ausgabe:

Rufen Sie jedes CSV-Dateiobjekt in PowerShell ab

Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen

Da wir alle CSV-Dateien haben, importieren wir den Inhalt jeder Datei. Dies würde den Inhalt leicht mit einer gemeinsamen Kopfzeile zusammenführen.

Wir können den Import-CSV verwenden, um tabellenartige Objekte aus den Inhalten der geleiteten CSV-Datei zu konstruieren.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Ausgabe:

Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen

Die Informationen wurden aus den beiden bereitgestellten CSV-Dateien zusammengeführt.

Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell

Wir können die obigen Objekte in CSV-Strings umwandeln und sie in einer Textdatei speichern. Das Cmdlet Export-Csv steht zur Verfügung.

Wir sollten den Parameter Append verwenden, um sicherzustellen, dass der Inhalt nicht ersetzt und angehängt wird.

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

Ausgabe:

Dadurch sollte eine neue Textdatei mit dem Namen merged.txt erstellt werden. Dieser Dateiinhalt würde aus den beiden oben genannten CSV-Dateien zusammengeführt.

Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in 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.

Verwandter Artikel - PowerShell CSV