使用Powershell并正在进行foreach
循环。循环中的一个步骤是在csv文件中找到匹配 -
import-csv ".\RateCard.csv" | where-object{$($Item.'From Number') -match "^\+?($($_.Destination))\w*$"}
foreach循环在一个月的时间段内处理大约100,000条记录,并在没有csv查找的情况下在几分钟内完成。添加csv查找后,我可以看到每次查找需要大约5-10秒。 csv文件有40,000行和大约10列。
虽然我知道客户端处理速度会变慢,而且我应该考虑使用SQL,但我想知道是否有更快的方法来执行此操作。我想过使用一个流阅读器,但无法弄清楚如何进行匹配查找。
任何建议都将不胜感激。
答案 0 :(得分:2)
正如mjolinor建议的那样,将您的Import-CSV移到ForEach循环之外:
$RateCard = importcsv ".\ratecard.csv"
ForEach($Item in $Items){
if($RateCard.Destination -contains $Item.'From Number'){
Do Stuff
}
}
我刚刚添加了一个If / Then函数来检查您的项目的起始编号是否在CSV的目标字段中找到。