Powershell从数据记录器更改采样率CSV文件

时间:2017-08-29 18:42:02

标签: powershell

我有来自数据记录器的csv数据,它每秒收集信息而不是每15分钟收集一次信息,我制作了一个脚本来导出每900个条目。该脚本适用于较小的csv文件(最大80mb)。但我有一个3.6GB的文件,它没有用。

我在线查看并找到了更好的方法来提高速度(没有.net,并且还没有能够让stream.reader工作)。

这是脚本:

$file = Import-Csv z:\csv\input_file.csv -Header A,B,C,D,E,F
 $counter = 0
 ForEach ($item in $file) 
 {
$counter++
 If($counter -lt 900)
 {
}
Else{
 Write-Output “$item” | Out-File "z:\csv\output_file.csv" -Append
$counter=0
 }
}

非常感谢任何想法/优化。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以跳过将其作为CSV阅读,并将其作为文本阅读。然后循环迭代900次,并输出这些行。

categories

我确定可能会进行其他优化,但这是加快速度的简单方法。

编辑:好的,所以$file = Get-Content z:\csv\input_file.csv -ReadCount 1000 For($i=0; $i -le $file.count;$i=$i+900){ $file[$i] | Add-Content z:\csv\output_file.csv } 的行为与我预期的略有不同。当设置为0或1以外的数字时,它会创建一个字符串数组。所以,基本上-ReadCount,此时有两个选项......要么一次使用[array[string[]]]来读取整个文件,要么一次最好读取900行只是每组中的第一个,并将其直接传递到管道-ReadCount 0

Set-Content

这样一次将文件读入内存900行,然后只传递管道中每个系列的第一行,并将其输出到输出文件。