How to use TAB as column separator in SQLCMD

Viewed 49749

SQLCMD supports the -s parameter to specify the column separator, but I couldn't figure how how to represent the tab (CHAR(9)) character. I have tried the following but both don't work:

sqlcmd -S ServerName -E -Q"select * from mytable" -s"\t" -o results.txt
sqlcmd -S ServerName -E -Q"select * from mytable" -s'\t' -o results.txt

Any ideas how to do this in SQLCMD?

12 Answers

A similar answer to one posted above, but it's simpler in a way that I think is significant.

  1. Open your text editor
  2. Press Tab
  3. Highlight the chunk of whitespace (the tab) created
  4. Copy and paste that into the spot in your SQL command

Even though this tab is represented as a wide chunk of whitespace, it is a single character.

The other answer had some unnecessary stuff about pasting the whole command with "<TAB>" in it. I think that throws people off (it certainly threw me off).

To work in the Command Prompt window instead in batch file, this is the only way that I have found to solve it:

sqlcmd -S ServerName -E -d database_Name -Q"select col1, char(9), col2, char(9), col3, char(9), col4, char(9), col5 from mytable" -o results.txt -W -w 1024 -s "" -m 1

Use dynamic sql with CHAR(9):

SET @cmd ='SQLCMD -S MyServer -d MyDatabase -E -W -Q "SELECT * FROM MyTable" -s"' + CHAR(9) + '" -o "MyFilePath.txt"'

Try using horizontal scroll bars with cmd.exe or powershell. Right click shortcut and click properties for repeated use, or right click title bar and click properties after opening then click layout tab. In screen buffer size set width and height to 8000 and then unselect wrap text output on resize (important). Click ok. Then restore down by clicking button next to minimize. You should see horizontal and vertical scroll bars. You can maximize window now and scroll in any direction. Now you can see all records in database.

I had this problem while trying to run sqlcmd on terminal. I got it working by entering a tab character (copying from text editor didn't work for me).

Press cntrl + v then tab.

How to enter a tab char on command line?

tldr: use ALT+009 the ascii tab code for the separator character

In the example, replace {ALTCHAR} with ALT+009 (hold the ALT key and enter the digits 009)

sqlcmd -E -d tempdb -W -s "{ALTCHAR}" -o junk.txt -Q "select 1 c1,2 c2,3 c3"

Edit junk.txt. Tabs will be between columns.

For other command line options:

sqlcmd -?

Note: The shell converts the ALT char to ^I, but if you try the command by typing -s "^I", you won't get the same results.

If on Linux then this will work as the -s (col_separator)

-s "$(printf "t" | tr 't' '\t')" or

SQLCMDCOLSEP="$(printf "t" | tr 't' '\t')" sqlcmd -S ...

Related