2015-04-30 61 views
2

我正在嘗試使用sqlcmd將結果從存儲過程輸出到文本文件。但是,它在結果列(默認分隔符)之間放置一個空格,我需要刪除它。我正在使用下面的代碼,並試圖指定任何東西作爲列分隔符見下面的代碼(-s「」),但這是行不通的。它給了我一個缺少的參數錯誤。從sqlcmd輸出文件中刪除列空間

sqlcmd -S Server name -U Username-P Password -d Db name-Q 
      "exec Stored procedure" -h -1 -s "" -o c:\newtest.txt 

如何指定什麼作爲分隔符?

+0

爲什麼你不需要分隔符?沒有分隔符,你如何解析輸出? – Andrew

+0

它需要一個固定的寬度(粗糙的右側)輸出,因此可以導入到另一個軟件 –

+0

不確定sqlcmd會做出不正確的輸出 – Andrew

回答

1

它可以與BCP來完成,使用-t 0×90

-t在BCP字段終止符。你可以在存儲過程和表格上使用它,所以它應該做你需要的一切。

我只是證實了這一工作:

bcp dbname.dbo.tablename out "c:\test.txt" -S serveraddress -U username -P password -t 0x90 -c 

使用存儲過程會是這樣的:

BCP 「EXEC YourDatabaseNameGoesHere.dbo.sp_myproc'0123,0234,0345'」

+0

這很有用,非常感謝!它會輸出行號。任何想法如何壓制他們? –

+0

如果它是表中的id/identity列,那麼您不希望您可以使用select語句(用引號引起來)僅選擇所需字段來替換示例中的表字符串。或者,也許你的存儲過程返回它,在這種情況下,你將不得不改變proc或使用select語句。對不起,如果我誤解了這個問題。如果解決方案能起作用:) :) – Christopher

+0

啊是的!分類謝謝! 不幸的是,它刪除了空格,但它也刪除了存儲過程中設置的格式。每一列需要設置一個寬度,但固定寬度似乎已經被改變了。有沒有一種方法可以刪除列之間的空間,但不是列中的空格本身?這是我的代碼: bcp「EXEC LandChargesLive.dbo.InternalCreateMonthlyExportFile」查詢「c:\ test.txt」-S db2008.dev.local -U開發-P D3v3l0pm3nt -t 0x90 -c –