Ricerca di idee di progettazione per gestire circa 10 query SQL con 10 file di output separati

0

Ho un elenco di query da utilizzare per una serie di file di output associati. Sto avendo un blocco su ciò che un buon progetto sarebbe di mettere tutto insieme per le mie query da eseguire e l'output inviato ai file in modo uniforme. Di solito non ho la stessa cosa che deve fare così tante volte. Questo è con PowerShell ma dovrei essere in grado di utilizzare la maggior parte delle idee di design fornite. Sembra così:

$SQLquery_1 = @" blah "@

$SQLquery_2 = @" blah "@

#There's maybe 10 different queries

#The output files
$extractFiles = @("C:\temp\ProfileLongLangBak.csv","C:\temp\ProfileLongCredBak.csv", blah blah list of files)

#and of course there's about 10 powershell commands to do the sql query which works just fine. The below hasn't incorporated separate sql queries and output files yet

#create sql connection to connect to the sql DB
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection

$sqlConnection.ConnectionString = "Server=sqldev;Database=M_Test;User ID=blah;Password=blah" 
$sqlConnection.Open()

#Create a SqlCommand object to define the query
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.CommandText = $SQLquery_Languages
$sqlCmd.Connection = $sqlConnection

#create a SqlAdapter that actually does the work and manages everything
$sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$sqlAdapter.SelectCommand = $sqlCmd

#create an empty dataSet for the query to fill with its results
$dataSet = New-Object System.Data.DataSet

#execute the query and fill the dataSet (then disconnect)
$sqlAdapter.Fill($dataSet)
$sqlConnection.Close()


#dump the data to csv
$DataSet.Tables[0] | Export-Csv $extractFile #this may not be comma delimited...need to check

Il mio primo pensiero è di avere le query sql in una matrice e fare un ciclo attraverso entrambi gli array con un ciclo for che inizia con $ i = 0. Ma le query sono troppo lunghe per essere inserite in un array.

Stavo pensando di mettere tutti i comandi di PowerShell per la query in una funzione e chiamare la funzione con ogni query e il file di output come input e con ogni chiamata sarebbe scritto un altro file di risultati.

Qualcuno ha una buona idea di come gestire le lunghe stringhe di query in un design fluido per passare attraverso il lungo elenco di query e file di output? Grazie!

    
posta Michele 17.12.2018 - 16:41
fonte

1 risposta

0

Ho finito per fare questo:

$SQLquery_Lang = @"
SELECT blah
"@


$SQLquery_Cred = @"
 SELECT blah
"@

$SQLqueries = @($SQLquery_Lang, $SQLquery_Cred,   blah ... )
$extractFiles = @("C:\temp\ProfileLongLangBak.csv","C:\temp\ProfileLongCredBak.csv", blah ...)

#Loop through list of files and queries for ProfileLong
for($i=0; $i -lt ($SQLqueries.Length); $i++) {
   SQLQueryWriteToFile $SQLqueries[$i] $extractFiles[$i] #function call to process and write to file
}

:)

    
risposta data 18.12.2018 - 14:59
fonte

Leggi altre domande sui tag