powershell - 对导入 CSV 的限制?

标签 powershell csv

我正在尝试导入包含 7+ 百万条记录的 ~2.5 GiB .csv 文件。

-----          2021-09-13    06:28     2745868408 thefile.txt
3个多小时后,我停止了以下命令。任务管理器报告内存利用率接近 100%,所有内核的 CPU 利用率约为 90%。
$x = Import-Csv -Path '.\thefile.txt' -Delimiter '|'
Import-Csv 是否有任何已知限制? ?必须Get-Content|ForEach-Object使用?
PS C:\> $PSVersionTable.PSVersion.ToString()
7.1.4

最佳答案

在管道中使用它可能会更幸运,而不是将整个输出分配给变量。
然而...
PowerShell,或一般的脚本编写,旨在使日常任务尽可能简单。这就是为什么性能或内存消耗等因素优先于其他考虑因素(例如简单性和可用性)的原因。
如果您面临着非常高负载和性能密集型的任务,那么脚本工具通常不再是理想的选择。
Native PowerShell 适用于您日常的 1kb csv 文件,但对于这种情况,您可能应该考虑使用 3rd 方库。当然,您仍然可以在 PowerShell 中使用它。毕竟它是 .Net,这就是为什么它是如此出色的工具恕我直言。评论中提到了一些不错的 .Net Csv 解析器。
正如评论中所说,我认为 cmdlet 没有任何硬编码限制。限制仅在于您的硬件和一个简单的事实,即 cmdlet 的设计目的不是为了高效处理大文件,而是为了在日常情况下易于使用。

关于powershell - 对导入 CSV 的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69576296/

相关文章:

Python:write.csv 添加额外的回车符

java - 在java中读取CSV文件时出现NumberFormatException

linux - 使用 csvfix for linux 对数值进行排序 - 将数字转换为字符串

Powershell 什么是 Function script : functionname do? 特别是脚本:part

.net - Powershell 中的 AppDomain.DoCallBack

脚本运行后 Powershell 自动删除

powershell - 在 powershell 中如何将 ArrayList 输出到 CSV

python - 如何使用 pandas 从 GitHub 读取 CSV 文件

powershell - 调用自定义 cmdlet 不起作用?

php - fgetcsv 在 php 中有换行问题