我需要将大文件上传拆分为多个并行进程,并希望使用单个 CSV 文件作为输入。
是否可以从一个访问行块Import-Csv
对象,像这样:
$SODAData = Import-Csv $CSVPath -Delimiter "|" |
Where $_.Rownum == 20,000..29,999 |
Foreach-Object { ... }
这种提取的语法是什么?
我正在使用 Powershell 5。
Import-Csv
将文件作为对象数组导入,因此您可以执行类似的操作(使用范围运算符):
$csv = Import-CSv $CSVPath -Delimiter '|'
$SOAData = $csv[20000..29999] | ForEach-Object { ... }
另一种选择是使用Select-Object
:
$offset = 20000
$count = 10000
$csv = Import-Csv $CSVPath -Delimiter '|'
$SODAData = $csv |
Select-Object -Skip $offset -First $count |
ForEach-Object { ... }
如果您想避免将整个文件读入内存,您可以将上面的内容更改为单个管道:
$offset = 20000
$count = 10000
$SODAData = Import-Csv $CSVPath -Delimiter '|' |
Select-Object -Skip $offset -First $count |
ForEach-Object { ... }
但请注意,使用这种方法您需要多次读取文件才能处理多个数据块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)