multithreading - Powershell multithread and oracle procedure -


i have list of files increase 5 within 1 minutes never end. inserting data database using oracle procedure. (method external table)

then calling procedure powershell below.

foreach ($file in $files) {      #executing calculate procedure           executestoredprocedure -value sp_load_table_crm -filename $file.name -conn  }  

this works okay. takes long time , wanted speed up. better use multithreading or multiprocessing ? planning set powershell script on windows task scheduler.

you use runspaces. try this:

$files = @('file1','file2','file3') #list of files  $throttle = 10 #number of threads $runspacepool = [runspacefactory]::createrunspacepool(1, $throttle) $runspacepool.open()  $jobs = @() $scriptblock = {     param($file)     #place executestoredprocedure function inside script block or make sure loaded appropriate module via profile          executestoredprocedure -value sp_load_table_crm -filename ($file.name) -conn #heres function , parameters }  $files | % {     $file = $_     $job = [powershell]::create().addscript($scriptblock).addargument($file)     $job.runspacepool = $runspacepool     $jobs += new-object psobject -property @{       pipe = $job       result = $job.begininvoke()    } }  write-host "waiting.." -nonewline {    write-host "." -nonewline    start-sleep -seconds 1 } while ( $jobs.result.iscompleted -contains $false) write-host "all jobs completed!"  $results = @() foreach ($job in $jobs) {   $results += $job.pipe.endinvoke($job.result) } $results | ft -wrap -autosize 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -