<# OCTPDBA-662 This script will be used to run a query on every pharmacies and store the output in a CSV file There will be 1 file per pharmacy generated by the script. The CSV are overwritten on each execution of the script. Each execution of the script starts from the 1st array $target entry. If $create_concatenated is true, a file containing all the pharmacies will be create d at the end of the script. #> <# to fetch the list of pharmacies to run the query against, run this query on HCIMON and copy the result to $target USE [ControlCenter] DECLARE @res VARCHAR(MAX)='' SELECT @res = @res + ',"'+[s].[SE_DNS]+'"' FROM [dbo].[Server] s JOIN [dbo].[Entity] e ON [e].[EN_id] = [s].[SE_entity] WHERE e.[EN_id] IN ( 1, --sun 2, --ama 21 --cvi ) AND [s].[SE_DNS] NOT LIKE '%REF____.%' AND ( s.[SE_end_prod_date] IS NULL OR s.[SE_end_prod_date] > CURRENT_TIMESTAMP ) ORDER BY s.[SE_entity], [s].[SE_OU_code]; SELECT STUFF(@res,1,1,'') as OU_list #> #$target="sun001aps.sunstore.ch","sun002aps.sunstore.ch","sun003aps.sunstore.ch","sun011aps.sunstore.ch","sun099aps.sunstore.ch","sun100aps.sunstore.ch","sun102aps.sunstore.ch","sun103aps.sunstore.ch","sun111aps.sunstore.ch","sun115aps.sunstore.ch","sun121aps.sunstore.ch","sun131aps.sunstore.ch","sun135aps.sunstore.ch","sun141aps.sunstore.ch","sun143aps.sunstore.ch","sun151aps.sunstore.ch","sun161aps.sunstore.ch","sun171aps.sunstore.ch","sun181aps.sunstore.ch","sun185aps.sunstore.ch","sun186aps.sunstore.ch","sun191aps.sunstore.ch","sun201aps.sunstore.ch","sun211aps.sunstore.ch","sun221aps.sunstore.ch","sun231aps.sunstore.ch","sun241aps.sunstore.ch","sun245aps.sunstore.ch","sun251aps.sunstore.ch","sun261aps.sunstore.ch","sun267aps.sunstore.ch","sun291aps.sunstore.ch","sun301aps.sunstore.ch","sun311aps.sunstore.ch","sun321aps.sunstore.ch","sun331aps.sunstore.ch","sun341aps.sunstore.ch","sun351aps.sunstore.ch","sun361aps.sunstore.ch","sun371aps.sunstore.ch","sun381aps.sunstore.ch","sun391aps.sunstore.ch","sun401aps.sunstore.ch","sun421aps.sunstore.ch","sun431aps.sunstore.ch","sun441aps.sunstore.ch","sun451aps.sunstore.ch","sun461aps.sunstore.ch","sun471aps.sunstore.ch","sun481aps.sunstore.ch","sun491aps.sunstore.ch","sun501aps.sunstore.ch","sun511aps.sunstore.ch","sun521aps.sunstore.ch","sun531aps.sunstore.ch","sun541aps.sunstore.ch","sun550aps.sunstore.ch","sun551aps.sunstore.ch","sun571aps.sunstore.ch","sun591aps.sunstore.ch","sun601aps.sunstore.ch","sun621aps.sunstore.ch","sun645aps.sunstore.ch","sun651aps.sunstore.ch","sun661aps.sunstore.ch","sun671aps.sunstore.ch","sun691aps.sunstore.ch","sun721aps.sunstore.ch","sun731aps.sunstore.ch","sun741aps.sunstore.ch","sun751aps.sunstore.ch","sun761aps.sunstore.ch","sun771aps.sunstore.ch","sun781aps.sunstore.ch","sun791aps.sunstore.ch","sun797aps.sunstore.ch","sun811aps.sunstore.ch","sun841aps.sunstore.ch","sun851aps.sunstore.ch","sun871aps.sunstore.ch","sun891aps.sunstore.ch","sun892aps.sunstore.ch","sun893aps.sunstore.ch","sun894aps.sunstore.ch","sun895aps.sunstore.ch","sun896aps.sunstore.ch","sun919aps.sunstore.ch","sun950aps.sunstore.ch","sun952aps.sunstore.ch","sun953aps.sunstore.ch","ama001aps.amavita.ch","ama002aps.amavita.ch","ama003aps.amavita.ch","ama004aps.amavita.ch","ama006aps.amavita.ch","ama007aps.amavita.ch","ama008aps.amavita.ch","ama009aps.amavita.ch","ama011aps.amavita.ch","ama012aps.amavita.ch","ama013aps.amavita.ch","ama017aps.amavita.ch","ama018aps.amavita.ch","ama019aps.amavita.ch","ama021aps.amavita.ch","ama022aps.amavita.ch","ama023aps.amavita.ch","ama027aps.amavita.ch","ama028aps.amavita.ch","ama029aps.amavita.ch","ama030aps.amavita.ch","ama031aps.amavita.ch","ama032aps.amavita.ch","ama033aps.amavita.ch","ama034aps.amavita.ch","ama035aps.amavita.ch","ama036aps.amavita.ch","ama038aps.amavita.ch","ama039aps.amavita.ch","ama040aps.amavita.ch","ama041aps.amavita.ch","ama043aps.amavita.ch","ama044aps.amavita.ch","ama045aps.amavita.ch","ama046aps.amavita.ch","ama047aps.amavita.ch","ama048aps.amavita.ch","ama049aps.amavita.ch","ama050aps.amavita.ch","ama051aps.amavita.ch","ama052aps.amavita.ch","ama053aps.amavita.ch","ama055aps.amavita.ch","ama056aps.amavita.ch","ama058aps.amavita.ch","ama060aps.amavita.ch","ama062aps.amavita.ch","ama064aps.amavita.ch","ama065aps.amavita.ch","ama066aps.amavita.ch","ama067aps.amavita.ch","ama076aps.amavita.ch","ama079aps.amavita.ch","ama080aps.amavita.ch","ama081aps.amavita.ch","ama082aps.amavita.ch","ama083aps.amavita.ch","ama084aps.amavita.ch","ama085aps.amavita.ch","ama086aps.amavita.ch","ama087aps.amavita.ch","ama089aps.amavita.ch","ama090aps.amavita.ch","ama091aps.amavita.ch","ama093aps.amavita.ch","ama095aps.amavita.ch","ama096aps.amavita.ch","ama097aps.amavita.ch","ama201aps.amavita.ch","ama203aps.amavita.ch","ama204aps.amavita.ch","ama206aps.amavita.ch","ama207aps.amavita.ch","ama208aps.amavita.ch","ama209aps.amavita.ch","ama212aps.amavita.ch","ama214aps.amavita.ch","ama215aps.amavita.ch","ama216aps.amavita.ch","ama217aps.amavita.ch","ama219aps.amavita.ch","ama220aps.amavita.ch","ama221aps.amavita.ch","ama222aps.amavita.ch","ama223aps.amavita.ch","ama224aps.amavita.ch","ama225aps.amavita.ch","ama226aps.amavita.ch","ama227aps.amavita.ch","ama228aps.amavita.ch","ama230aps.amavita.ch","ama232aps.amavita.ch","ama233aps.amavita.ch","ama235aps.amavita.ch","ama236aps.amavita.ch","ama237aps.amavita.ch","ama238aps.amavita.ch","ama239aps.amavita.ch","ama240aps.amavita.ch","ama241aps.amavita.ch","ama242aps.amavita.ch","ama243aps.amavita.ch","ama244aps.amavita.ch","ama246aps.amavita.ch","ama247aps.amavita.ch","ama248aps.amavita.ch","ama249aps.amavita.ch","ama250aps.amavita.ch","ama251aps.amavita.ch","ama253aps.amavita.ch","ama254aps.amavita.ch","ama255aps.amavita.ch","ama256aps.amavita.ch","ama257aps.amavita.ch","ama259aps.amavita.ch","ama260aps.amavita.ch","ama262aps.amavita.ch","ama263aps.amavita.ch","ama264aps.amavita.ch","ama265aps.amavita.ch","ama266aps.amavita.ch","ama267aps.amavita.ch","ama269aps.amavita.ch","ama270aps.amavita.ch","ama271aps.amavita.ch","ama272aps.amavita.ch","ama273aps.amavita.ch","ama274aps.amavita.ch","ama276aps.amavita.ch","ama278aps.amavita.ch","ama279aps.amavita.ch","ama280aps.amavita.ch","ama282aps.amavita.ch","ama283aps.amavita.ch","ama287aps.amavita.ch","ama289aps.amavita.ch","ama292aps.amavita.ch","ama293aps.amavita.ch","ama294aps.amavita.ch","ama295aps.amavita.ch","ama296aps.amavita.ch","ama299aps.amavita.ch","ama300aps.amavita.ch","ama301aps.amavita.ch","ama302aps.amavita.ch","ama303aps.amavita.ch","ama304aps.amavita.ch","ama305aps.amavita.ch","ama306aps.amavita.ch","ama308aps.amavita.ch","ama311aps.amavita.ch","ama312aps.amavita.ch","ama315aps.amavita.ch","ama316aps.amavita.ch","ama319aps.amavita.ch","ama321aps.amavita.ch","ama322aps.amavita.ch","ama323aps.amavita.ch","ama324aps.amavita.ch","ama325aps.amavita.ch","ama331aps.amavita.ch","ama332aps.amavita.ch","ama333aps.amavita.ch","ama334aps.amavita.ch","ama335aps.amavita.ch","ama336aps.amavita.ch","ama337aps.amavita.ch","ama339aps.amavita.ch","ama341aps.amavita.ch","ama349aps.amavita.ch","ama449aps.amavita.ch","ama550aps.amavita.ch","ama551aps.amavita.ch","ama552aps.amavita.ch","ama553aps.amavita.ch","ama557aps.amavita.ch","ama558aps.amavita.ch","ama560aps.amavita.ch","ama561aps.amavita.ch","ama562aps.amavita.ch","ama563aps.amavita.ch","ama564aps.amavita.ch","ama601aps.amavita.ch","ama602aps.amavita.ch","ama603aps.amavita.ch","ama604aps.amavita.ch","ama605aps.amavita.ch","ama609aps.amavita.ch","ama611aps.amavita.ch","ama612aps.amavita.ch","ama613aps.amavita.ch","ama614aps.amavita.ch","ama621aps.amavita.ch","ama622aps.amavita.ch","ama623aps.amavita.ch","ama624aps.amavita.ch","ama625aps.amavita.ch","ama626aps.amavita.ch","ama701aps.amavita.ch","ama702aps.amavita.ch","ama703aps.amavita.ch","ama898aps.amavita.ch","ama900aps.amavita.ch","ama988aps.amavita.ch","ama989aps.amavita.ch","cvi243aps.coop-vitality.ch","cvi244aps.coop-vitality.ch","cvi245aps.coop-vitality.ch","cvi246aps.coop-vitality.ch","cvi247aps.coop-vitality.ch","cvi248aps.coop-vitality.ch","cvi250aps.coop-vitality.ch","cvi251aps.coop-vitality.ch","cvi252aps.coop-vitality.ch","cvi253aps.coop-vitality.ch","cvi254aps.coop-vitality.ch","cvi255aps.coop-vitality.ch","cvi256aps.coop-vitality.ch","cvi257aps.coop-vitality.ch","cvi259aps.coop-vitality.ch","cvi260aps.coop-vitality.ch","cvi261aps.coop-vitality.ch","cvi263aps.coop-vitality.ch","cvi264aps.coop-vitality.ch","cvi265aps.coop-vitality.ch","cvi266aps.coop-vitality.ch","cvi267aps.coop-vitality.ch","cvi268aps.coop-vitality.ch","cvi269aps.coop-vitality.ch","cvi271aps.coop-vitality.ch","cvi272aps.coop-vitality.ch","cvi273aps.coop-vitality.ch","cvi275aps.coop-vitality.ch","cvi501aps.coop-vitality.ch","cvi502aps.coop-vitality.ch","cvi505aps.coop-vitality.ch","cvi507aps.coop-vitality.ch","cvi508aps.coop-vitality.ch","cvi801aps.coop-vitality.ch","cvi803aps.coop-vitality.ch","cvi804aps.coop-vitality.ch","cvi805aps.coop-vitality.ch","cvi806aps.coop-vitality.ch","cvi807aps.coop-vitality.ch","cvi809aps.coop-vitality.ch","cvi810aps.coop-vitality.ch","cvi811aps.coop-vitality.ch","cvi812aps.coop-vitality.ch","cvi813aps.coop-vitality.ch","cvi814aps.coop-vitality.ch","cvi815aps.coop-vitality.ch","cvi816aps.coop-vitality.ch","cvi817aps.coop-vitality.ch","cvi818aps.coop-vitality.ch","cvi819aps.coop-vitality.ch","cvi820aps.coop-vitality.ch","cvi821aps.coop-vitality.ch","cvi823aps.coop-vitality.ch","cvi824aps.coop-vitality.ch","cvi825aps.coop-vitality.ch","cvi826aps.coop-vitality.ch","cvi828aps.coop-vitality.ch","cvi829aps.coop-vitality.ch","cvi830aps.coop-vitality.ch","cvi831aps.coop-vitality.ch","cvi832aps.coop-vitality.ch","cvi833aps.coop-vitality.ch","cvi834aps.coop-vitality.ch","cvi835aps.coop-vitality.ch","cvi836aps.coop-vitality.ch","cvi837aps.coop-vitality.ch","cvi838aps.coop-vitality.ch","cvi839aps.coop-vitality.ch","cvi840aps.coop-vitality.ch","cvi841aps.coop-vitality.ch","cvi842aps.coop-vitality.ch","cvi843aps.coop-vitality.ch","cvi844aps.coop-vitality.ch","cvi845aps.coop-vitality.ch","cvi846aps.coop-vitality.ch","cvi847aps.coop-vitality.ch","cvi848aps.coop-vitality.ch","cvi849aps.coop-vitality.ch","cvi851aps.coop-vitality.ch","cvi852aps.coop-vitality.ch","cvi853aps.coop-vitality.ch","cvi854aps.coop-vitality.ch","cvi855aps.coop-vitality.ch","cvi856aps.coop-vitality.ch","cvi858aps.coop-vitality.ch","cvi859aps.coop-vitality.ch","cvi862aps.coop-vitality.ch","cvi863aps.coop-vitality.ch","cvi864aps.coop-vitality.ch","cvi865aps.coop-vitality.ch","cvi866aps.coop-vitality.ch","cvi867aps.coop-vitality.ch","cvi868aps.coop-vitality.ch","cvi869aps.coop-vitality.ch" $target="ama704aps","ama705aps","ama707aps","cvi503aps","cvi504aps","sun004aps","sun006aps","cvi506aps" #$target="(local)" #$target=$null if((Test-Path d:\octpdba-662 -PathType Leaf) -ne $true){ $null = New-Item -ItemType Directory -Force -Path d:\octpdba-662 } set-location "d:\octpdba-662" $create_concatenated = $false $glob_csv = ".\all_phcies.csv" #remove global csv file if it exists if(Test-Path $glob_csv -PathType Leaf){ Remove-Item $glob_csv } #fetch data if($null -ne $target){ $target | ForEach-Object -ThrottleLimit 3 -Parallel { #$target | ForEach-Object { $instance = "$($_)\apssql" $csv = "$($_).csv" $query=" USE Arizona; SELECT CONVERT(DATE, [LCL_value_date]) as LCL_value_date, [ITK_key], [ittx].[ITTX_description], [LCL_calculation] FROM [Arizona].[dbo].[LORE_calculation_log] WITH (NOLOCK) JOIN [dbo].[Item_key] WITH (NOLOCK) ON ITK_item = LCL_item AND ITK_type = 1 JOIN [dbo].[Item] IT WITH (NOLOCK) ON [IT].[Item_ID] = ITK_item AND [IT].[IT_origin] = 1 JOIN [dbo].[Item_text] ittx WITH (NOLOCK) ON [ittx].[ITTX_item] = ITK_item AND [ittx].[ITTX_language] = 103 WHERE [LCL_value_date] >= DATEADD(yy, -2, GETDATE()) ORDER BY CONVERT(DATE, [LCL_value_date]) DESC, [ITK_key]; " if((Test-Path "$($_).zip") -eq $false){ Write-Output "Running query on $_" Invoke-Sqlcmd -Database Arizona -ServerInstance $instance -Query $query -ConnectionTimeout 5 | Export-Csv -Path $csv -Delimiter ";" -NoTypeInformation Compress-Archive -Path $csv -DestinationPath "$($_).zip" Remove-Item $csv #write-output $null >> "$($_).done" write-output " $csv created." } else{ write-output "$_ already processed, skipping." } } } #concatenate all csv in a big one write-output "" if($create_concatenated){ write-output "Appending all generated CSV in one file..." Get-ChildItem . -Filter *.csv | ForEach-Object { Import-Csv -path $_ | export-csv -Append -LiteralPath $glob_csv -NoTypeInformation Write-Output " ...Appended $_ to $glob_csv" } } write-output "Done."