sql >> Base de Datos >  >> RDS >> Sqlserver

Formateo de la salida de PowerShell SQL Server en columnas y filas

Export-Csv espera que la entrada sean objetos. La entrada de cadena se considera como objetos de cadena, que tienen solo una propiedad (Length ), por lo que solo se exporta esta propiedad. Si su entrada es una matriz de cadenas, debe convertirla en un objeto, p. así:

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

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

Lo anterior crearía un archivo output.csv con el siguiente contenido:

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

Los nombres de propiedad (a , b , c ) se convierten en los encabezados CSV, los valores de propiedad (foo , bar , baz ) se convierten en los valores CSV.

Si su consulta SQL genera una lista de matrices, probablemente tendrá que hacer algo como esto:

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

Sin embargo, no tengo un servidor SQL a mano, así que tómalo con pinzas.