1
누군가 Powershell 스크립트의 속도를 높이는 데 도움이 될 수 있기를 바랍니다. 내가하고있는 일은 수백 개의 CSV 파일을 읽고 정보를 분석하여 누락 된 항목에 대한 데이터를 얻은 다음 해당 출력을 HTML 파일에 쓰는 것입니다. 여기에 내가 파일을 처리하기 위해 사용하고있는 루프입니다 : 내가 몇 CSV 파일을 테스트 할 때여러 CSV 파일에서 여러 항목 구문 분석
ForEach ($Filename in $FileList) {
$CustTemp = import-csv "$FilePath\$Filename"
$CustName = $CustTemp[0].CustName
Write-Host "Reading data for $CustName"`r
For ($counter=0;$counter -lt 31;$counter++){
$CheckDate = (get-date).AddDays(-$counter)
$CheckShortDate = $CheckDate.ToShortDateString()
$TempData = import-csv "$FilePath\$Filename" | Select FileName,FileDate | where {$_.FileDate -eq $CheckShortDate}
If ($TempData -eq $null) {
$row = "No file found for $CheckShortDate for $CustName"
$HTMLReportItems += $row
}
$HTMLReportItems = $HTMLReportItems | ConvertTo-Html -Fragment
}
}
이 루프가 잘 작동하지만 많은 수의 파일 (300 +)에 대해 그것을 실행할 때 루프입니다 각 파일 (30 ~ 1m)을 완료하는 데 오랜 시간이 걸립니다. 이유는 CSV 파일이 반복 당 30 번 액세스되는 이유입니다. 내가 바라는 것은 누군가가 데이터를 어떻게 처리 할 수 있는지에 대해 더 나은 제안을 할 수 있다는 것입니다.
제안 해 주셔서 감사합니다. 변화를 한 후에도 여전히 이상한 행동을보고 있습니다. 각 반복은 다음 시간보다 오래 걸립니다. 여기에 10 개 CSV 파일로 내 시운전의 출력입니다 : 시작 시간 : 17시 53분 30초 읽기 : ab010 시간 : 00.6093750 읽기 : ak007 시간 : 01.7968750 읽기 : ak036 시간 : 02.9218750 읽기 : az052 시간 : 04.1562500 읽기 : az106 시간 : 05.2187500 읽기 : az141 시간 : 06.4531250 읽기 : az159 시간 : 07.6103516 읽기 : ca017 시간 : 08.8593750 읽기 : ca051 시간 : 10.0468750 읽기 : ca136 시간 : 11.5166015 처리를 완료. 총 시간 : 59.3300781 초. –
내 답변에 형식이 잘못되어 죄송합니다. 파일을 읽을 때마다 약 1 시간이 걸렸습니다. 1 초. 이전 파일보다 오래. 이 방법으로 300 개 이상의 파일을 반복하면 실용적이지 못할 것입니다. 각 CSV에는 대략 50 줄 이니 나는 각각의 크기가 하나의 요소라고 생각하지 않습니다. 제안? –
@ W.J.P. 업데이트 된 답변보기 –