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

Formatering af powershell SQL Server-output i kolonner og rækker

Export-Csv forventer, at input er objekter. Strenginput betragtes som strengobjekter, der kun har én egenskab (Length ), så kun denne egenskab eksporteres. Hvis dit input er en række strenge, skal du lave det til et objekt, f.eks. sådan her:

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

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

Ovenstående ville skabe en fil output.csv med følgende indhold:

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

Egenskabsnavnene (a , b , c ) bliver til CSV-headerne, egenskabsværdierne (foo , bar , baz ) bliver CSV-værdierne.

Hvis din SQL-forespørgsel genererer en liste over arrays, bliver du sandsynligvis nødt til at gøre noget som dette:

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

Jeg har dog ikke en SQL-server ved hånden, så tag det med et gran salt.



  1. Lær MySQL / MariaDB for begyndere – del 1

  2. MYSQL-lagrede procedure for opdateringsvariabler er 0

  3. I stedet for Triggers i mysql

  4. Forberedte parametre LIKE-sætning Virker ikke med SQLSRV