在 PowerShell 中合併 CSV 檔案

Migel Hewage Nimesha 2024年2月15日
  1. CSV 格式
  2. 在 PowerShell 中過濾 .csv 檔案
  3. 在 PowerShell 中獲取每個 .csv 檔案物件
  4. 在 PowerShell 中合併 CSV 檔案的內容
  5. 將合併的內容寫入 PowerShell 中的文字檔案
在 PowerShell 中合併 CSV 檔案

可能需要合併多個 CSV 檔案並將資料寫入 PowerShell 中的文字檔案。Import-CsvExport-Csv cmdlet 可用於執行此操作。

CSV 格式

有多種型別的檔案格式可用於不同的目的。CSV 使用簡單的結構來儲存資料。

它可用於在不同程式之間交換資料。正如其名稱 CSV(逗號分隔值)所暗示的,資料是逗號分隔的。

CSV 檔案中儲存的資訊如下所示。

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

分隔符可以是空格、分號或任何其他字元。

讓我們建立兩個將使用 PowerShell 合併的 csv 檔案。

CSV 檔案

username.csv 內容:

使用者名稱 CSV 檔案

username2.csv 內容:

使用者名稱 2 CSV 檔案

在 PowerShell 中過濾 .csv 檔案

建議使用 Get-ChildItem cmdlet 來獲取指定位置中的所有 .csv 檔案型別。可以傳遞 -Filter 引數以過濾具有 .csv 副檔名的檔案。

在你的情況下,.csv 檔案的資料夾路徑可能會有所不同。

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

讓我們檢查一下 $csvFileList 中的可用內容。

$csvFileList

輸出:

在 PowerShell 中篩選 CSV 檔案

在 PowerShell 中獲取每個 .csv 檔案物件

讓我們用全名檢索每個檔案物件。Select-Object cmdlet 可用於檢索具有擴充套件屬性的每個物件。

我們將上一步的輸出傳遞給 Select-Object 命令。

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

當你顯示 $csfFilesToImport 變數時,可以看到兩個 CSV 檔案物件都可以使用全名。

$csfFilesToImport

輸出:

在 PowerShell 中獲取每個 CSV 檔案物件

在 PowerShell 中合併 CSV 檔案的內容

由於我們得到了所有的 CSV 檔案,讓我們匯入每個檔案的內容。這很容易將內容與公共標題行合併。

我們可以使用 Import-CSV 從管道 CSV 檔案內容構建類似表格的物件。

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

輸出:

在 PowerShell 中合併 CSV 檔案的內容

該資訊已從提供的兩個 CSV 檔案中合併。

將合併的內容寫入 PowerShell 中的文字檔案

我們可以將上述物件轉換為 CSV 字串並將它們儲存到文字檔案中。Export-Csv cmdlet 可供使用。

我們應該使用 Append 引數來確保內容不會被替換和附加。

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

輸出:

這應該會建立一個名為 merged.txt 的新文字檔案。該檔案內容將從上述兩個 CSV 檔案中合併。

將合併的內容寫入 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.

相關文章 - PowerShell CSV