这看起来非常基本但我无法在任何地方找到或弄清楚。
我有2个CVS文件,我想导入一个并将ID列更改为另一个.csv中包含的相关字符串,然后将结果导出到文件中。我一直在试验哈希表,但似乎无法弄明白。
电流:
Main.csv Reference.csv
Type_ID Category_ID Location_ID Type_ID Type
1 11 111 1 Tablet
2 22 222 2 Laptop
3 33 333 3 Workstation
希望阅读:
Type Category_ID Location_ID
Tablet 11 111
Laptop 22 222
Workstation 33 333
这是我正在使用的代码:
#import file as hash table
$t = Import-Csv -Path .\Reference.csv -Header "column1","column2"
$HashTable = @{}
foreach($r in $t)
{
Write-Host $r.column1 $r.column2
$HashTable[$r.column1] = $r.column2
}
$HashTable
#compare ID and assign string
ForEach($_.Type_ID in (Import-CSV .\Main.csv)){
If($HashTable.ContainsKey($_.column1)){
$_.column1=$HashTable[$_.column2]
}
$_
} | Export-Csv .\it_works.csv
非常感谢任何建议
答案 0 :(得分:0)
首先,您可以创建一个Hashtable:
Import-Csv C:\dumy\b.csv | % {$t=@{}}{$t+=@{$_.type_id=$_.type}}
然后:
Import-Csv C:\dumy\a.csv | select @{name = "Type"; expression={$t[$_.type_id]}},Category_ID,Location_ID | export-csv 'c:\dumy\c.csv'