Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Formattazione dell'output di PowerShell SQL Server in colonne e righe

Export-Csv si aspetta che l'input sia oggetti. L'input stringa è considerato come oggetti stringa, che hanno una sola proprietà (Length ), quindi viene esportata solo questa proprietà. Se il tuo input è un array di stringhe, devi trasformarlo in un oggetto, ad es. così:

$array = "foo", "bar", "baz"

New-Object -Type PSCustomObject -Property @{
  "a" = $array[0]
  "b" = $array[1]
  "c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation

Quanto sopra creerebbe un file output.csv con il seguente contenuto:

"c","a","b"
"baz","foo","bar"

I nomi delle proprietà (a , b , c ) diventano le intestazioni CSV, i valori delle proprietà (foo , bar , baz ) diventano i valori CSV.

Se la tua query SQL genera un elenco di array, probabilmente dovrai fare qualcosa del genere:

Invoke-Sqlcmd ... | % {
  New-Object -Type PSCustomObject -Property @{
    "col1" = $_[0]
    "col2" = $_[1]
    "col3" = $_[2]
  }
} | Export-Csv output.csv -NoTypeInformation

Tuttavia, non ho un server SQL a portata di mano, quindi prendilo con le pinze.