【发布时间】:2021-09-12 15:19:19
【问题描述】:
请参考前面的问题: How to get replace by id (Id value get from XML) and put into CSV, powershell
我需要添加 ForEach-Object 而不是 ForEach,我有 11,000 行。所以,这需要太多时间。
foreach ($csvRow in $csvRows) {
foreach ($columnName in $columnNames) {
$id = $csvRow.$columnName
if (-not $id) { continue }
$newId = @($xmlDoc.enum_types.enum_type.Where( { $_.field_name -eq $columnName }, 'First').
items).ForEach( { $_.item }).Where( { $_.id -eq $id }).value
$csvRow.$columnName = $newId
}
}
$csvRows | Export-Csv -NoTypeInformation -Encoding utf8 $CSVpath
【问题讨论】:
-
我很困惑。您想将当前的 foreach 更改为
Foreach-Object?为了速度表现? 1.) 你应该能够相当简单地改变它。 2.) 你会得到一个性能下降,将任何东西发送到管道中。慢 40 倍。 -
您可能只想获取它并直接使用 SQL,这可能比 CSV 操作快得多。
标签: powershell csv