Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Formatando a saída do PowerShell SQL Server em colunas e linhas


Export-Csv espera que a entrada seja objetos. A entrada String é considerada como objetos string, que possuem apenas uma propriedade (Length ), então apenas esta propriedade é exportada. Se sua entrada é uma matriz de strings, você precisa transformá-la em um objeto, por exemplo. assim:
$array = "foo", "bar", "baz"

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

O acima criaria um arquivo output.csv com o seguinte conteúdo:
"c","a","b"
"baz","foo","bar"

Os nomes das propriedades (a , b , c ) se tornam os cabeçalhos CSV, os valores das propriedades (foo , bar , baz ) tornam-se os valores CSV.

Se sua consulta SQL gerar uma lista de arrays, você provavelmente terá que fazer algo assim:
Invoke-Sqlcmd ... | % {
  New-Object -Type PSCustomObject -Property @{
    "col1" = $_[0]
    "col2" = $_[1]
    "col3" = $_[2]
  }
} | Export-Csv output.csv -NoTypeInformation

Eu não tenho um servidor SQL em mãos, portanto, tome com um grão de sal.