簡體   English   中英

如何使用PowerShell合並兩個csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM