Sql-Server
使用 SQLCMD 導出/提取不帶尾隨空格的數據
我正在嘗試使用 sqlcmd 實用程序從我的一些表中提取數據,因為 SSMS 不會為我生成適當的 csv-s。
我的問題:所有 csv 提取都包括根據表定義的尾隨空格(我的意思是欄位長度),無論使用 char、varchar、nvarchar 等…
當使用 sqlcmd 實用程序時,例如具有以下選項:
sqlcmd -S . -d /*databasename*/ -E -s, -W -Q "SELECT * FROM /*tablename*/" > C:\Test.csv
它仍然包含尾隨空格,例如:
,"273 ",
在 SSMS 中執行此操作和/或更正我的 SQLCMD 參數的任何提示或技巧?
儘管 SQLCMD 使用螢幕 (
SQLCMD -?
) 如何描述-W
參數:$$ -W remove trailing spaces $$
此參數的實際目的不是刪除現有的尾隨空格,而是跳過用空格填充值。
-W
如果一個字元串值已經有它自己的尾隨空格,那麼如果你簡單地指定參數,它們就不能被刪除。據我所知,沒有辦法用參數解決這個問題。您將不得不使用文本處理實用程序來操作輸出,或者首先生成沒有尾隨空格的值。對於後者,您可以使用該
RTRIM()
函式,但這當然意味著您必須將 替換為SELECT *
實際的列列表,其中一些列將是計算列:SELECT ... RTRIM(SomeStringColumn) AS SomeStringColumn, ... FROM ...
你試過這些
sqlcmd
參數嗎?sqlcmd -o output_file -W (remove trailing spaces)