【发布时间】:2018-06-12 08:37:39
【问题描述】:
对于如何使用 Powershell 将多个 CSV 文件合并为一个的问题,有一些很好的回答,将标题行放在除this thread 中的第一个文件之外的所有文件上。
Kemiller2002 发布的答案在大多数情况下对我来说效果很好,但是当输出文件超过 2GB 时,我开始出现内存不足异常错误。抛出以下错误消息...
Exception of type 'System.OutOfMemoryException' was thrown.
At xxx.ps1:9 char:20
+ $false {$lines | Select -Skip 1}
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], OutOfMemoryException
+ FullyQualifiedErrorId : System.OutOfMemoryException
这是使用 Powershell 5.1。 MaxMemoryPerShellMB(报告为 2147483647)似乎不是问题,实际系统内存似乎也不是问题 - 我上次运行它时有 33GB 的可用内存(总共 64GB ) 离开。
现在脚本继续运行,并添加到文件中(我的一个最终文件最终大小约为 7GB),但当我看到这个时,我不能确定它是否已捕获所有文件中的每一行弹出错误。
有什么建议吗?
编辑
我添加了一些输出,以便查看错误发生的位置。我正在附加 11 个文件,大小从大约 350 MB 到 1GB 不等……正是这两个大约 1GB 的文件导致了错误。一个报告的长度为 909,050,983,另一个为 973,429,260。
【问题讨论】:
-
嗯,最简单的方法是确保您运行的是 64 位 powershell 实例而不是 32 位实例。
-
是的,对不起,我应该提到它运行在 64 位
标签: powershell csv