我試過無數次的擦肩而過實際TAB字符中SQLCMD,我根本無法讓它接受它。我最喜歡的解決方法是通過SQLCMD ASCII十六進制0x1F的ASCII單位分隔符,並且可以通過在命令行中輸入Ctrl-_(控制下劃線,在美式鍵盤上將其變爲Ctrl-Shift ('''在鍵盤的第一行'0'旁邊)。
使用「單元分隔符」的優點是,這是非常不可能出現在任何文本說明,併爲此目的而設計(見https://en.wikipedia.org/wiki/Delimiter)
已經得到了SQLCMD做到這一點對我來說,我再管這是輸出雖然Unix風格的轉換命令:
tr '\037' '\t'
\ 037是「單元分隔符」的八進制數,而\ t代表製表符,'tr'將爲我們翻譯這兩個字符,我們不需要依賴腳本或shell中的任何引用技巧。
要在Windows上獲得'tr',可以從GnuWin32安裝CoreUtils包(請參閱http://gnuwin32.sourceforge.net/packages/coreutils.htm),或者增加重量並安裝完整的Unix環境,例如Cygwin(http://cygwin.com/)。
把兩者結合起來,我們得到:
sqlcmd ... -h-1 -W -k -r1 -s^_ ... | tr '\037' '\t'
,這將讓你與你的標籤輸出。
查看我上面使用的其他選項,它們對於嘗試從SQLCMD獲得乾淨輸出(按順序;沒有標題,修剪空白,CRLF到空格,錯誤到STDERR(不是您的輸出文件!),'^ _'是單元分隔符在命令行上的顯示方式)。您還需要添加「SET NOCOUNT ON;」到你的查詢或sql腳本,否則你會得到行計數作爲你的輸出中出現的試用消息!
來源
2012-06-12 05:14:43
dsz
大回答!!!!對於希望在PowerShell中執行此操作的其他人 - 請注意'-s'之後的空格很重要。 :) – 2015-02-09 19:41:52