dbcli / mssql-cli

A command-line client for SQL Server with auto-completion and syntax highlighting
BSD 3-Clause "New" or "Revised" License
1.35k stars 192 forks source link

Having access to raw results of the query would be handy #532

Open boxofyellow opened 2 years ago

boxofyellow commented 2 years ago

This might be a duplicate of #231, but that was closed as fixed referencing non-interactive output options. However that only talks about ways running in non-interactive mode and options to either send the results to file on standard out. That only gets us half the way there. Doing so still includes text in the result does not come from the query.

For example

mssql-cli -S *** -U *** -P *** -Q "SET NOCOUNT ON; SELECT name FROM sys.databases"

Yields this

Commands completed successfully.
+------------------------------------------+
| name                                     |
|------------------------------------------|
| master                                   |
| tempdb                                   |
| model                                    |
| msdb                                     |
| Azurite_Blob                             |
| Mps_Configuration                        |
| Mps_653f5e5a-3fbb-44be-9e61-be90630a7187 |
+------------------------------------------+
Commands completed successfully.

While correct, that make consuming this output more difficult. Ideally there would an option so that the above query would yield this output

master
tempdb
model
msdb
Azurite_Blob
Mps_Configuration
Mps_653f5e5a-3fbb-44be-9e61-be90630a7187

My example may be an over simplification, newlines may not always be the best delimiter :smile:. So it may be handy to provide options to return the results in a standard format, here are a few that folks might find handy. csv, tsv, json, yaml, xml, raw text

Most of the power of many command line tool does not come from running the tool in isolation, but instead comes from being able to combine it with other command line tools.

freimer commented 2 years ago

You can change the format in the config file: grep format ~/.config/mssqlcli/config

Table format. Possible values: psql, plain, simple, grid, fancy_grid, pipe,

table_format = csv

However, even if you select csv format and use -i -o options you still get the Commands completed successfully in the output, of the CSV file! That's totally unexpected and not proper.

DevinSmithWork commented 2 years ago

I'm also running into this issue. I'm following up the query with a command that deletes the first line of the CSV but I would love to not have to do this!

bdmorin commented 1 year ago

I have SET NOCOUNT ON; at the top of my script and I exchanged (204 rows affected) for Commands completed successfully.

I mean, all i need to do is run it through awk, but still..