【发布时间】:2019-11-01 14:22:08
【问题描述】:
运行此代码时出现内存异常。有没有办法一次过滤一个文件并在处理每个文件后写入输出和追加。似乎下面的代码会将所有内容加载到内存中。
$inputFolder = "C:\Change\2019\October"
$outputFile = "C:\Change\2019\output.csv"
Get-ChildItem $inputFolder -File -Filter '*.csv' |
ForEach-Object { Import-Csv $_.FullName } |
Where-Object { $_.machine_type -eq 'workstations' } |
Export-Csv $outputFile -NoType
【问题讨论】:
-
CSV 只是文本。 ImportCSV cmdlet 对于在 PowerShell 中操作 CSV 数据很有用,但如果您只想将一个 CSV 附加到另一个 CSV(假设它们的宽度相同),您可以像阅读文本一样阅读它们。
get-content *.csv | set-content combined.csv似乎应该可以。可能不得不弄乱行尾? -
@Joe:我只需要使用 machine_type -eq "workstation" 过滤 combine.csv
-
您的 CSV 总是以相同的顺序排列相同的列?
标签: powershell csv out-of-memory