Reputation: 1
$CSV1.B and $CSV1.K
$CSV2.B and $CSV2.H
match,I'm not overly familiar with CSV work in powershell, any input is greatly appreciated.
Tried putting each CSV into an array, and running a foreach-object loop on Array2 to match $CSV2 WHERE $CSV1.B and $CSV2.K match $CSV2.B and $CSV2.H, then creating a custom PSOBJECT with $CSV2.K. This did not work.
$CSV1 = import-csv C:\Users\blah\sqlexport.csv
$array1=@()
$csv2= Import-Csv -Path (Get-ChildItem -Path C:\Users\blah\csvset\-Filter '*.csv').FullName
$array2=@()
$csv1 | foreach-object {
$csv2 | Where-Object { $CSV1.ItemNumber -eq $_.ItemNumber -and $CSV1.Sold -eq $_.Sold }
[PSCustomObject]@{
Value1 = $CSV1.ItemNumber
Value2 = $CSV1.Sold
Value3 = $CSV2.TargetData
}
} | export-csv -path C:\Users\blah\test.csv -NoTypeInformation -Append
Upvotes: 0
Views: 73
Reputation:
Provided the given column names ItemNumber
,Sold
,TargetData
do exist,
this quick&dirty script using a calculated property should do,
just replace the .CSV
path\file names.
$hash=@{}
Import-Csv .\CSV2.csv | ForEach-Object{$hash["$($_.ItemNumber),$($_.Sold)"]=$_.TargetData}
Import-Csv .\CSV1.csv |
Select-Object -Property *,@{n='TargetData';e={$hash["$($_.ItemNumber),$($_.Sold)"]}} |
Export-Csv .\New-CSV1.csv -NoTypeInformation
Import-Csv (Get-ChildItem -Path C:\Users\blah\bunchofcsvs\ -Filter '*.csv').FullName |
ForEach-Object{$hash["$($_.'Item Number'),$($_.Sold)"]=$_.TargetData}
Import-Csv C:\Users\blah\sqlexportcsv\csv.csv |
Select-Object -Property *,@{n='TargetData';e={$hash["$($_.ItemNumber),$($_.SoldQty)"]}} |
Export-Csv New.csv -NoTypenformation
Upvotes: 0