2012-07-31 84 views
0

我有一個包含69個表格的數據庫。導出包含多個表格的SQL Server結果到Excel

請幫我導出此

exec sp_MSforeachtable 'select top 3 * from ?' 

線取前3名的記錄每個表,並將它們打印在「結果」選項卡(根據this question)。

我想將結果導出到.xls文件中。

我試過this solution它使用sp_makewebtask,但我知道現在已經摺舊了。

你能幫忙嗎?

非常感謝,

菲爾

附:數據庫在MSSQL 2008上運行

+0

你可以使用SSIS包嗎? – stb 2012-07-31 14:53:26

回答

0

首先,您可能需要爲查詢添加一個ORDER BY:沒有它,您將從每個表中獲取三個隨機行,這可能是也可能不是您想要的。

接下來,這是一項一次性任務還是您會定期執行的任務?如果是一次性任務,則動態生成查詢腳本,手動運行它並自行復制並粘貼結果。如果你需要經常做這個

select 'select top 3 * from ' + quotename(name) + ' order by SomeColumn union all ' 
from sys.tables 
where... -- add something here if necessary 

,我會避免TSQL,因爲它是與數據庫之外的文件工作的一個非常貧窮的語言:這可能給你如何生成腳本的想法。相反,編寫一個小腳本連接到數據庫,獲取數據並編寫輸出文件通常更容易。您可以使用任何腳本或編程語言對您最爲方便,然後使用SQL代理(如果您的SQL Server版本中提供了該代理)進行安排。

+0

嗨Pondlife,謝謝你的回覆。是的,隨機很好。這是一項一次性任務。我的帖子中的腳本只是做這項工作,但問題是我不知道如何將結果導出到Excel文件中。在一句話中:我需要1)從69個表格中隨機選擇3條記錄,2)保存到Excel文件中。 1)已經實現了,但我不能做2)。謝謝 – Phil 2012-07-31 20:42:50

+0

如果這是一次性任務,那麼正如我所提到的,您可以將結果從SSMS手動複製並粘貼到Excel中。如果所有69個表具有相同的結構,那麼我建議的查詢將允許您獲取一個結果集中的所有行,因此您只需複製並粘貼一次,而不是69次。 – Pondlife 2012-08-01 12:08:20

相關問題