Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Powershell SQL Server-Ausgabe in Spalten und Zeilen formatieren

Export-Csv erwartet, dass die Eingabe Objekte sind. String-Eingaben werden als String-Objekte betrachtet, die nur eine Eigenschaft haben (Length ), sodass nur diese Eigenschaft exportiert wird. Wenn Ihre Eingabe ein Array von Zeichenfolgen ist, müssen Sie sie in ein Objekt umwandeln, z. so:

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

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

Das Obige würde eine Datei output.csv erstellen mit folgendem Inhalt:

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

Die Eigenschaftsnamen (a , b , c ) werden zu den CSV-Headern, den Eigenschaftswerten (foo , bar , baz ) werden zu den CSV-Werten.

Wenn Ihre SQL-Abfrage eine Liste von Arrays generiert, müssen Sie wahrscheinlich so etwas tun:

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

Ich habe allerdings keinen SQL-Server zur Hand, also mit Vorsicht genießen.