我需要您的支持才能提出解決方案。如何將存儲過程輸出導出到文本文件
我有10個不同的存儲過程集,我必須導出到文本文件中,所有10個過程將返回相同的一組列(僅調用參數不同)。
我沒有得到解決方案該怎麼做?
請幫我理解如何將數據從存儲過程輸出導出到製表符分隔的文本文件?
如果可能的話,也可以在SSIS包中告訴我。
謝謝
我需要您的支持才能提出解決方案。如何將存儲過程輸出導出到文本文件
我有10個不同的存儲過程集,我必須導出到文本文件中,所有10個過程將返回相同的一組列(僅調用參數不同)。
我沒有得到解決方案該怎麼做?
請幫我理解如何將數據從存儲過程輸出導出到製表符分隔的文本文件?
如果可能的話,也可以在SSIS包中告訴我。
謝謝
簡單的解決方案在這裏。
對於每個SP:
最後,打開記事本中的每個文件,並簡單地連接結果。
編輯
如果你有例如10個存儲過程,你可以做到以下幾點:
輸出創建臨時表
CREATE TABLE #output (...)
使用10 INSERT...EXEC
的,以填補臨時表
INSERT INTO #output EXEC MySP1 ...
GO
INSERT INTO #output EXEC MySP2 ...
GO
INSERT INTO #output EXEC MySP3 ...
GO
...
INSERT INTO #output EXEC MySP10 ...
GO
執行查詢SELECT * FROM #output
EDIT 2
如果你想有一個信息在輸出臨時表哪裏你的數據來自(哪個SP),你可以添加另一列到你的SP中,以便對INSERT ... EXEC語句有一點控制。
如果您希望這樣做,但無法控制SP輸出,一種方法是控制#output
的默認值,另一種方法是對另一個臨時表中的中間結果進行dd操作。我將使用第二個:
創建輸出的臨時表,例如,您的表名稱作爲標識符。
CREATE TABLE #output (spname sysname, ...)
創建臨時表中間結果
CREATE TABLE #temp (...)
使用10 INSERT...EXEC
的填充中間,然後輸出表
TRUNCATE TABLE #temp
INSERT INTO #temp EXEC MySP1 ...
GO
INSERT INTO #output
SELECT spname = 'MySP1', * FROM #temp
GO
TRUNCATE TABLE #temp
INSERT INTO #temp EXEC MySP2 ...
GO
INSERT INTO #output
SELECT spname = 'MySP2', * FROM #temp
GO
...
執行查詢SELECT * FROM #output
嗨Ozren,謝謝你的評論。但是我需要不同的方法,因爲我必須手動運行所有10個SP。 – Venki
有沒有其他方法可以讓我們從SP中獲得輸出? – Venki
見更新答案 – OzrenTkalcecKrznaric
爲什麼這個標記SQL Server和MySQL的?你正在使用哪個數據庫? –
它應該可能是MSSQL ...你知道這裏的工作如何 – OzrenTkalcecKrznaric