统计用户数据库内所有表的行数

曾经写过博文介绍利用代理表统计数据库内所有表占用空间情况,也包括表的行数:

可以参考:ASE15.0中利用代理表实现统计用户表存储空间大小的功能

配置代理表可能有些麻烦,本文提供一个简单的脚本来获得数据库内表的行数。

#!/bin/bash

ISQL="isql -Usa -P -SSYBASE -w5000"
database_name="tpchdb"

$ISQL  <<EOF  | sed -e '1,2d' -e 's/^ *//;s/ *$//' -e '/^$/d' > tablename.list
use ${database_name}
go
set nocount on
go
select name from sysobjects where type='U' order by name
go
quit
EOF

while read table_name
do
        if [ "${table_name}" = "" ]; then
                break
        fi
        $ISQL <<EOF | grep "=" | sed -e 's/^ *//;s/ *$//;s/= */=/'
use ${database_name}
go
set nocount on
go
select "${table_name}=",count(*) from ${table_name}
go
quit
EOF
done < tablename.list
echo "Table Count:`wc -l tablename.list|awk '{print $1}'`"
rm -f tablename.list

使用的时候,仅仅需要修改一下红色标记的用户名、密码、服务器名称、数据库名称即可。

当然你也可以只统计相应的表的行数,修改select name from sysobjects where type='U' order by name,比如:name like 'flow_%' and crdate > '2014-01-01'

另外,如果不想用脚本而在TSQL中实现的话,可能得用到游标了。

脚本tablerowcount.sh下载地址

 

  • 本文链接地址:http://www.dbainfo.net/count_all_tables_rowcount.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《统计用户数据库内所有表的行数》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
  • 目前还没有任何评论.
    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)