Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Formatage de la sortie powershell SQL Server en colonnes et en lignes

Export-Csv s'attend à ce que l'entrée soit des objets. L'entrée de chaîne est considérée comme des objets de chaîne, qui n'ont qu'une seule propriété (Length ), seule cette propriété est donc exportée. Si votre entrée est un tableau de chaînes, vous devez en faire un objet, par ex. comme ceci :

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

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

Ce qui précède créerait un fichier output.csv avec le contenu suivant :

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

Les noms de propriété (a , b , c ) sont devenus les en-têtes CSV, les valeurs de propriété (foo , bar , baz ) deviennent les valeurs CSV.

Si votre requête SQL génère une liste de tableaux, vous devrez probablement faire quelque chose comme ceci :

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

Cependant, je n'ai pas de serveur SQL à portée de main, alors prenez avec un grain de sel.