使用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,但我想知道是否有更快的方法来做到这一点。我想要使用流读取器,但不知道如何进行匹配查找。
如有任何建议,将不胜感激。
发布于 2014-03-10 19:41:09
正如mjolinor所建议的,将Import移到ForEach循环之外:
$RateCard = importcsv ".\ratecard.csv"
ForEach($Item in $Items){
if($RateCard.Destination -contains $Item.'From Number'){
Do Stuff
}
}我只是在CSV的目标字段中添加了if /a函数来检查条目的From Number是否被找到。
https://stackoverflow.com/questions/22308590
复制相似问题