在 PowerShell 中合併 CSV 檔案
-
CSV
格式 -
在 PowerShell 中過濾
.csv
檔案 -
在 PowerShell 中獲取每個
.csv
檔案物件 - 在 PowerShell 中合併 CSV 檔案的內容
- 將合併的內容寫入 PowerShell 中的文字檔案
可能需要合併多個 CSV 檔案並將資料寫入 PowerShell 中的文字檔案。Import-Csv
和 Export-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
檔案。
username.csv
內容:
username2.csv
內容:
在 PowerShell 中過濾 .csv
檔案
建議使用 Get-ChildItem
cmdlet 來獲取指定位置中的所有 .csv
檔案型別。可以傳遞 -Filter
引數以過濾具有 .csv
副檔名的檔案。
在你的情況下,.csv
檔案的資料夾路徑可能會有所不同。
$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv
讓我們檢查一下 $csvFileList
中的可用內容。
$csvFileList
輸出:
在 PowerShell 中獲取每個 .csv
檔案物件
讓我們用全名檢索每個檔案物件。Select-Object
cmdlet 可用於檢索具有擴充套件屬性的每個物件。
我們將上一步的輸出傳遞給 Select-Object
命令。
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
當你顯示 $csfFilesToImport
變數時,可以看到兩個 CSV
檔案物件都可以使用全名。
$csfFilesToImport
輸出:
在 PowerShell 中合併 CSV 檔案的內容
由於我們得到了所有的 CSV
檔案,讓我們匯入每個檔案的內容。這很容易將內容與公共標題行合併。
我們可以使用 Import-CSV
從管道 CSV
檔案內容構建類似表格的物件。
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
輸出:
該資訊已從提供的兩個 CSV
檔案中合併。
將合併的內容寫入 PowerShell 中的文字檔案
我們可以將上述物件轉換為 CSV
字串並將它們儲存到文字檔案中。Export-Csv
cmdlet 可供使用。
我們應該使用 Append
引數來確保內容不會被替換和附加。
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
輸出:
這應該會建立一個名為 merged.txt
的新文字檔案。該檔案內容將從上述兩個 CSV
檔案中合併。
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.