2013-08-06 177 views
0

我需要您的支持才能提出解決方案。如何將存儲過程輸出導出到文本文件

我有10個不同的存儲過程集,我必須導出到文本文件中,所有10個過程將返回相同的一組列(僅調用參數不同)。

我沒有得到解決方案該怎麼做?

請幫我理解如何將數據從存儲過程輸出導出到製表符分隔的文本文件?

如果可能的話,也可以在SSIS包中告訴我。

謝謝

+0

爲什麼這個標記SQL Server和MySQL的?你正在使用哪個數據庫? –

+0

它應該可能是MSSQL ...你知道這裏的工作如何 – OzrenTkalcecKrznaric

回答

3

簡單的解決方案在這裏。

對於每個SP:

  • Management Studio中的結果窗格執行SP
  • 下,單擊鼠標右鍵,選擇結果另存爲...
  • 下保存類型選擇CSV

最後,打開記事本中的每個文件,並簡單地連接結果。

編輯

如果你有例如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

  • underneath結果窗格中,在保存類型單擊鼠標右鍵,選擇結果另存爲...
  • 選擇CSV

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

  • 下方在R esults窗格中,右鍵單擊並選擇結果另存爲...
  • 下保存類型選擇CSV
+0

嗨Ozren,謝謝你的評論。但是我需要不同的方法,因爲我必須手動運行所有10個SP。 – Venki

+0

有沒有其他方法可以讓我們從SP中獲得輸出? – Venki

+0

見更新答案 – OzrenTkalcecKrznaric

相關問題