选择所有非空SQL Server表的前N行

时间:2018-11-16 15:53:14

标签: sql sql-server

我正在执行数据库迁移到新的ERP系统的操作,当前的Microsoft SQL数据库具有3000多个表,其中95%的表没有数据,导致在确定架构时会遇到很多麻烦/烦恼。

有没有一种方法可以为数据库中每个非空的表打印标题和前三行数据?

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

SQL Server具有不受支持的sp_MSforeachtable。因此,您可以这样做:

exec sp_MSforeachtable @command1='select top (3) * from ? where exists (select 1 from ?)';

否则,您将使用游标或其他循环机制来实现基本相同的事情。

编辑:

Jeroen提出了一个很好的建议:

exec sp_MSforeachtable @command1='if exists (select 1 from ?) select top (3) ''?'' as table_name, t.* from ? t';

这还会添加表格名称,以增加额外的香料。

答案 1 :(得分:1)

您可以使用sp_MSforeachtable功能

EXEC sp_MSforeachtable 'PRINT ''?''; SELECT TOP 3 * FROM ?'