我有一个包含69个表的数据库。
请帮我导出
exec sp_MSforeachtable 'select top 3 * from ?'
该行获取每个表的前3个记录,并在“结果”选项卡中打印它们(根据this question)。
我想将结果导出到.xls文件中。
我尝试使用sp_makewebtask的this solution,但我知道现在已经折旧了。
你能帮忙吗?
非常感谢,
菲尔
P.S。数据库在MSSQL 2008上运行
答案 0 :(得分: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 Agent(如果在您的SQL Server版本中可用)安排它。