2016-05-16 72 views
1

我已經在存儲過程中創建了一個類型爲表的變量。在過程結束時,我選擇表中的所有行並顯示它們。當我右鍵單擊標題並選擇「另存爲」時,它允許我將類型更改爲「所有文件」並將文件另存爲文本文件。這工作正常,但NULLS中的列保存爲NULLS。我希望它用空格填充NULL。如何刪除保存在SQL Server Management Studio中的空值

我一直在試圖找到一種方法來創建使用存儲過程的文件,但大多數事情表明使用SSIS,但我無法弄清楚如何使用SSIS的變量是一個表,而不是使用實際表格。

如果我既可以空格替換空值或使用存儲過程做同樣的事情,這將是巨大的。我無法使用製表符或逗號作爲分隔符,因爲最終產品必須是平面文件,每個列使用與列標題中聲明的相同數量的字符。用空格填充。

感謝您提供的任何幫助。

Cheers

P.S.我正在使用SQL Server 2012 Management Studio

+0

添加默認值。 –

+0

我忘了提及我實際上已將列默認爲'',但部分存儲過程會將列重置爲空 –

回答

1

如果您在存儲過程中做的最後一件事是SELECT * FROM不是Temptable那麼你可以使用該SP在一個OLEDB源組件。從表或視圖更改爲Sql命令並使用Exec(sp_SomeName)語法。這將創建一個可以連接到目標組件(如平面文件)的管道。

我已經看到了多年來許多問題做結果另存爲...我只會用這個非正式的「快速檢查」文件,而不是對任何被認爲「活」或「生產」的數據。

這裏是一個很好的博客,還展示瞭如何使用參數。空字符串表中定義的 http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx

+0

謝謝我將檢查此問題!我沒有意識到我可以將源代碼更改爲存儲過程 –

+0

謝謝喬!我能夠從SSIS創建一個平面文件,我相信這些數據看起來就像我希望的樣子。 NULLS被替換爲空格;我把它設置爲固定寬度。現在我只需要弄清楚如何通過存儲過程觸發SSIS包,並讓它每次都重命名文件。再次感謝您的幫助! –

+0

我很高興我可以幫助:)。如果您正在使用SSIS目錄,那麼從包含SP的tsql調用相當容易。如果沒有,取決於您的部署模型,有很多方法可以做到這一點。對於文件命名,它可以與連接管理器屬性中的表達式一樣簡單,或者如果需要,可以使用執行sql任務使用tsql或腳本任務來獲取值以編寫自定義代碼。關鍵是設置連接管理器連接字符串屬性。 –

3

執行此操作的簡單方法是將NULL s轉換爲您的SELECT語句中的空格。

SELECT COALESCE(yourcolumn, '')

COALESCE條款圍繞在它NULL小號每一列。

Using COALESCE article link

相關問題