[英]How to merge two csv files with PowerShell
我有兩個.CSV文件,其中包含有關我工作的員工的信息。 第一個文件(ActiveEmploye.csv)有大約70個不同的字段,有2500個條目。 另一個(EmployeEmail.csv)有四個字段(FirstName,LastName,Email,FullName)和700個條目。 這兩個文件都有FullName字段,這是我可以用來比較每個文件的唯一方法。 我需要做的是將電子郵件地址(從EmployeEmail.csv)添加到ActiveEmploye.csv中的相應員工。 而且,對於那些沒有電子郵件地址的人,該字段可以留空。
我試着使用幾天前在互聯網上找到的Join-Object函數,但是第一個csv文件包含了太多函數可以處理的字段。
任何建議都非常感謝!
可能有幾種方法可以給這只貓上皮。 我會嘗試這個:
Import-Csv EmployeeEmail.csv | ForEach-Object -Begin {
$Employees = @{}
} -Process {
$Employees.Add($_.FullName,$_.email)
}
Import-Csv ActiveEmployees.csv | ForEach-Object {
$_ | Add-Member -MemberType NoteProperty -Name email -Value $Employees."$($_.FullName)" -PassThru
} | Export-Csv -NoTypeInformation Joined.csv
這是@BartekB的另一種方法,我用它來連接左邊的多個字段,並且處理時間更好。
Import-Csv EmployeeEmail.csv | ForEach-Object -Begin {
$Employees = @{}
} -Process {
$Employees.Add($_.FullName,$_)
}
Import-Csv ActiveEmployees.csv |
Select *,@{Name="email";Expression={$Employees."$($_.FullName)"."email"}} |
Export-Csv Joined.csv -NoTypeInformation
這允許在$ Employees上查詢FullName的數組索引,然后獲取該元素上的命名成員的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.