我有一个脚本,它基本上读取csv文件并搜索相关的ms-access数据库记录并更新它们。问题是它在100-150条记录后变得越来越慢。有人可以就此发表看法。但请考虑第一个记录正在快速实施,这就是为什么它的奇怪问题。顺便说一下脚本在本地PC上运行,而不是在服务器上运行。
$adOpenStatic = 3
$adLockOptimistic = 3
$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADODB.Recordset
$cn.Open("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = $path")
Write-Host "database connection established"
$data = Import-Csv $csvfile
$data =$data | Where-Object{$_.b}
$itemNo=0
$dp=1
$fp=1
$total=0
$Verkaufsbeleg=0
$Verkaufsbelegposition=0
foreach ($element in $data) {
if($itemNo -ne $element.d + $element.f -and $element.d){
$itemNo=$element.d + $element.f
$Verkaufsbeleg=$element.d
$Verkaufsbelegposition=$element.f
$param1= [convert]::ToInt32($Verkaufsbeleg, 10)
$param2=[convert]::ToInt32($Verkaufsbelegposition, 10)
write-host $param1
write-host $param2
$dp=0
$fp=0
$position=99
}
if($element.k -eq $something){
$dp++
}elseif($element.k -eq $something){
$fp++
}
$rs.Open("Select * From Projects where ([Column1]='"+$param1+"' and [Column2]="+$param2+")", $cn,$adOpenStatic,$adLockOptimistic)
While ($rs.EOF -ne $True) {
$value=$element.i
if($element.k -eq $something){
$rs.Fields.Item("DP")=$value
$total++
}
if($element.k -eq $something){
$rs.Fields.Item("FP")=$value
$total++
}
write-host "Index" $rs.AbsolutePosition
$rs.MoveNext()
}
$rs.Close()
$rs= new-object -comobject ADODB.Recordset
}
$cn.Close()
Write-Host "Total Items Updated" $total
答案 0 :(得分:1)
$ rs.Filter =“[Column1] ='”+ $ param1 +“'和[Column2] =”+ $ param2
计算和升级后,可以通过
清除ir$ rs.Filter = 0
由于