2011-05-24 64 views
1

我有一個自動化批處理過程,它使用sqlcmd從數據庫中提取數據並將其轉儲到文本文件中。該數據庫中的許多字段的類型爲varchar(max),Sqlcmd將這些字段限制爲256個字符,除非我在sqlcmd調用的標誌中添加類似-y 0的內容。sqlcmd:reconciling -W和-Y

這給了我大於256個字符的字段的全文,但它也增加了大量的空白;這些字段被填充以使每個字段儘可能大地根據其數據類型而變大,實質上給我帶來大量填充和浪費空間的大文件。

我可以通過將-W添加到我的sqlcmd標誌來解決這個問題,但這給了我一個錯誤,指出-W-y是不兼容的。

有沒有人有這個問題?關於如何解決它的想法?

+0

您是否*使用SQLCmd或者您是否可以使用SSIS的批量複製功能(取決於您的SQL Server的版本)? – Tony 2011-05-24 16:03:30

+0

我必須使用sqlcmd。老大這麼說。 – SuperNES 2011-05-24 16:06:19

+0

我會努力說服你的老闆,SSIS對於這類任務來說更好 - 這是它的設計目的,並且非常容易從SSMS中使用。 – 2011-05-24 16:23:27

回答

0

this thread有建議,指定使用-s的列分隔符可以修剪數據,就好像它沒有指定數據出來的固定寬度一樣。

如果這不起作用,您是否在您的SELECT查詢中嘗試過RTRIM(LTRIM(ColumnName))

+0

我已經在使用-s。 – SuperNES 2011-05-24 16:13:13

+0

@SuperNES - 然後我出於想法,我不得不承認我使用SSIS比SqlCmd多,抱歉。 – Tony 2011-05-24 16:14:01

+0

我感謝你的幫助。相信我,我已經就這類事情進行了許多關於sqlcmd的適當性的動態對話。 – SuperNES 2011-05-24 16:23:42

-2

我在使用SQLCMD創建CSV文件時遇到了此問題,並通過欺騙SQLCMD解決了這個問題。而不是返回幾個字段,並讓SQLCMD將逗號作爲分隔符,我只是將所有將逗號自己放在其中的字段連接起來。我知道這是一個醜陋的解決方法,但解決了我的問題。希望它可以幫助別人。

+0

爲什麼downvote?接受的答案甚至不能解決問題,至少我正在展示一種解決方案,而不是建議客戶使用不同的工具。此外,我不記得爲什麼,但我不能使用RTRIM(LTRIM())作爲解決方案。 – aristidescc 2015-09-10 17:40:36

相關問題