【发布时间】:2019-08-27 19:08:31
【问题描述】:
- 两个 CSV。 $CSV1 和 $CSV2。
- CSV1 有 50 列,40,000 行(和标题。)
CSV2 有 17 列,约 900 行,还有标题。) - 我需要匹配 $CSV1 中的每一行
$CSV1.B and $CSV1.K
匹配 $CSV2 中的任何行,其中$CSV2.B and $CSV2.H匹配,
然后从 $CSV2 中匹配的行中获取 $CSV2.K。 澄清一下,如果 $CSV1 中的 ItemNumber 为 137 且 Sold 为 15 - 我需要在 $CSV2 中找到 ItemNumber 为 137 且 Sold 为 15 的任何行。然后,我需要在该行中提取 TargetData 的值,然后附加到 CSV1 的新副本,在其自己行的新列中 - 用于 CSV1 中的每一行。 - 然后我需要将匹配的 $CSV2.K 附加到 $CSV1 的新副本中,并将匹配的数据添加到带有新标题的新列中。
我对 powershell 中的 CSV 工作并不太熟悉,非常感谢任何输入。
尝试将每个 CSV 放入一个数组,并在 Array2 上运行 foreach-object 循环以匹配 $CSV2 WHERE $CSV1.B 和 $CSV2.K 匹配 $CSV2.B 和 $CSV2.H,然后创建自定义 PSOBJECT与 $CSV2.K。这不起作用。
$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
【问题讨论】:
-
到目前为止您尝试过什么?向我们展示你的工作。
-
我尝试将它们输入到 aray 中,但我不知道该怎么做。在代码中编辑。
-
@CharlieC 你能发布你到目前为止尝试过的代码吗?
-
你应该用一个例子来解释你第3点的匹配,
$csv1/$csv2中的匹配与另一个文件有什么关系? -
@LotPings - 解释包含在第 3 点中。B 和 K 列中每一行的 $CSV1 中的内容需要与 $CSV2 中 B 列和 H 中的任何行中的内容相匹配。 $CSV2 中的匹配行需要提取 $CSV2.K,并在新列中每行导出到 CSV1 的新 CSV 克隆。
标签: powershell