【发布时间】:2015-05-07 06:41:42
【问题描述】:
我有 2 个 csv 文件。每个都有不同的标题和不同的列数,并且有不同的条目数。
以下是前几行的一些示例
CSV 1
ID,Last_Name,First_Name,Middle_Name,Email_Addr,Title,Gender
###1,smith,bill,p,smith@soso.com,boss,m
###2,smith2,billy,p,smith2@soso.com,someguy,m
CSV 2
ID,Name Id,Last Name,First Name,Middle Name,Gender
###2,ID1010,smith2,billy,p,M
我正在尝试导入它们并比较 ID 列。当找到匹配项时,我想要一个新的 csv 文件,其中包含来自 CSV 1 的所有信息和来自 csv 2 的匹配名称 ID。
新的 CSV 示例:
ID,Last_Name,First_Name,Middle_Name,Email_Addr,Title,Gender,Name Id
###1,smith,bill,p,smith@soso.com,boss,m,
###2,smith2,billy,p,smith2@soso.com,someguy,m,ID1010
大约一年前,我一直在寻找并发现这个Stackoverflow,它似乎在正确的轨道上,但我似乎无法根据我的需要修改代码。这是我尝试过的。
$csv1 = Import-Csv -Path C:\STAFF\test1sky.csv
$csv2 = Import-Csv -Path C:\STAFF\test1power.csv
ForEach($Record in $csv2){
$MatchedValue = (Compare-Object $csv1 $Record -Property "ID" -IncludeEqual -ExcludeDifferent -PassThru).value
$Record = Add-Member -InputObject $Record -Type NoteProperty -Name "Name Id" -Value $MatchedValue
}
$csv2|Export-Csv 'C:\STAFF\combined.csv' -NoTypeInformation
我在新文件中得到了正确的标题,但我从来没有得到名称 ID 值。
知道我哪里出错了吗?我可能完全走错了路,有一种更简单的方法,但我需要能够在没有用户交互的情况下每晚执行此操作。任何帮助表示赞赏!
【问题讨论】:
标签: powershell csv merge