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

相关问题