我正在搜索一个SQL脚本,可用于确定给定数据库的任何表中是否有任何数据(即行计数).
我们的想法是在存在任何行(在任何数据库中)的情况下重新实现数据库.
所说的数据库是Microsoft SQL SERVER.
有人可以建议一个示例脚本吗?
我知道我可以获得一个表的列表
SELECT TABLE_NAME FROM information_schema.tables
WHERE NOT TABLE_NAME='sysdiagrams'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_TYPE= 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何修改它以获得具有表的当前行数的第二列.我虽然喜欢这样的东西:
DECLARE @tbl VARCHAR(200)
(SELECT @tbl = TABLE_NAME, TABLE_NAME,
(SELECT COUNT(ID) AS Cnt FROM @tbl)
FROM information_schema.tables
WHERE NOT TABLE_NAME='sysdiagrams'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_TYPE= 'BASE TABLE')
Run Code Online (Sandbox Code Playgroud)
我知道上面是不是有效的T-SQL,但我认为它得到的我会是什么点喜欢的做的事.这适用于SQL Server 2000.如果可能的话,我宁愿不使用存储过程.
我正在尝试熟悉一个大型数据库,并在许多表中搜索相关信息.我经常发现自己正在调用一个表,看看里面是否有相关数据,却发现表中没有记录.
如何快速调出所有表的列表及其中包含的记录数?我正在使用sql server 2008.
谢谢!
我正在尝试获取表中每列的非空值的计数。我研究了以下先前提出的SO问题,但没有找到满意的答案:
我编写了以下代码,以尝试为我的表构建一个数据字典,以包括列的名称,每列中填充的行数,数据类型,长度以及它是否为主键:
SELECT
c.name 'Column Name',
p.rows 'Row_Count',
t.Name 'Data type',
c.max_length 'Max Length',
ISNULL(i.is_primary_key, 0) 'Primary Key'
FROM
sys.columns c
INNER JOIN
sys.types t ON c.user_type_id = t.user_type_id
LEFT OUTER JOIN
sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN
sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
LEFT OUTER JOIN
sys.partitions p ON p.OBJECT_ID = i.OBJECT_ID and i.index_id = p.index_id
WHERE
c.object_id = OBJECT_ID('my_table')
Run Code Online (Sandbox Code Playgroud)
但是,Row_Count列返回所有Null。
我的预期结果如下所示:
Column_Name …Run Code Online (Sandbox Code Playgroud) 我想计算 SQL Server 数据库所有表的总行数,有谁知道我该如何执行该查询?
我将在作业中使用此信息在数据湖各层之间传输信息。
我正在使用sp_MSforeachtable我的数据库中获取特定表的行数.我希望这些按名称排序.
如何添加ORDER BY子句sp_MSforeachtable?
select table_name,
to_number(
extractvalue(
xmltype(
dbms_xmlgen.getxml(
'select count(*) c from '||table_name
))
,'/ROWSET/ROW/C')
) count
from user_tables
order by table_name;
Run Code Online (Sandbox Code Playgroud)
我知道它给出了每个表的行总数。但如何知道它是如何工作的呢?