我想把数据库中所有的表,每个有多少条数据全部统计出来,

小瑞 2009-11-27 07:53:57
您好:我想把数据库中所有的表,每个有多少条数据全部统计出来,
使用下面的语句可以把所有的表给统计出来
select TABLE_SCHEMA,TABLE_NAME from SYSIBM.tables where TABLE_SCHEMA = 'TEST',
使用
select count(*) from TABLE_NAME可以把表中有多少条数据显示出来,

但是我想在一条语句中完成这个操作,把所有的表名和表中的数据总量显示出来,但是想不出来,请赐教下,呵呵
...全文
787 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shu5135 2009-12-01
  • 打赏
  • 举报
回复
呵,好东西,都记下来。
小瑞 2009-11-30
  • 打赏
  • 举报
回复
没人气啊
小瑞 2009-11-28
  • 打赏
  • 举报
回复
runstats on table [模式名].[表名] with distribution and detailed indexes all 对表做runstats 好像只能对单表做统计吧


我用了reorgchk update statistics on table user 针对用户表进行REORGCHK
可以批量对用户表做runstats ,就是比较费时间,但是省心,去试试下哈
小瑞 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yangxiao_jiang 的回复:]
不过取系统表之前一定记得runstats 要不然数据不准 ,数据库进行runstats也是很费时间的操作,你要确定这样是否值的。
[/Quote]


恩,我昨晚测试了,的确只是一个大概的值,没办法费时间也要做,不然我要统计好几个库的数据库表的数据情况,每个库有500多个表,手工的话一个是累,另一个是容易出错,

上次手工统计一个库花了4个小时,累死了
现在才不玩手工

昨晚我用
SELECT TABSCHEMA,TABNAME,OWNER,CARD FROM SYSCAT.TABLES WHERE TABSCHEMA='MIBS'

查询出的结果绝大部分正确,有少量表查询出来的CARD值为-1,太晕了,
表名 CARD 实际的数据量
FSSPRDINFOPLUSSTATUS -1 221
VERIFICATIONDEALINGPARAMETER 6 7
V_GDSBAINFO -1 545
V_LOCALFOREIGNMAPPING -1 5417


查询结果为0和正数的基本正确,但是查询结果为-1的基本都是错误的





yangxiao_jiang 2009-11-28
  • 打赏
  • 举报
回复
不过取系统表之前一定记得runstats 要不然数据不准 ,数据库进行runstats也是很费时间的操作,你要确定这样是否值的。
小瑞 2009-11-28
  • 打赏
  • 举报
回复
hh,谢谢
ACMAIN_CHM 2009-11-27
  • 打赏
  • 举报
回复
[Quote]呵呵,找到了,[/Quote]

自己找到了。不错
小瑞 2009-11-27
  • 打赏
  • 举报
回复
呵呵,找到了,

select * from sysstat.TABLES (view)
或者
SELECT * FROM SYSCAT.TABLES WHERE TABSCHEMA='TEST'

值在CARD列,
Mr_Bean 2009-11-27
  • 打赏
  • 举报
回复
sysstat.tables这个表把
小瑞 2009-11-27
  • 打赏
  • 举报
回复
查询出库中所有的表
select * from sysibm.tables ;

查询出库中所有表的结构信息
select * from sysibm.columns

但是我想要的是每个表表中的数据量,所以在sysibm模式下应该没有保存。
yangxiao_jiang 2009-11-27
  • 打赏
  • 举报
回复
 Table--包括表的记录数、PAGE、PCTFREE以及COMPRESS等信息,相关的系统视图是:sysstat.tables、syscat.tables。

  Columns—包括COLUMNS的数量、长度、分布特征以及COMPRESS等信息,相关的系统视图是:sysstat.columns、syscat. columns。

  Index--包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引, 相关的系统视图是:sysstat.indexes、syscat. indexes。


具体是那个字段,我是想不起来了,你可以自己找找。
Mr_Bean 2009-11-27
  • 打赏
  • 举报
回复
哦 找到了
你看看这篇文章 除了你想要的这里还有更多你更想要的
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0411melnyk/
Mr_Bean 2009-11-27
  • 打赏
  • 举报
回复
反正就在系统表里面找带tables的表 好像记录数是cards字段 runstats就是更新那个表的 所以执行之前一定要runstats 要不然是不准确的
小瑞 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mr_bean 的回复:]
你查下 好像是
select A.name,B.rowcnt from sysobjects A,systabstats B
WHERE A.id=B.id
and A.type='U'
这样写吧

具体表名记不得了 不过取系统表之前一定记得runstats 要不然数据不准
[/Quote]

哥们不行啊
Mr_Bean 2009-11-27
  • 打赏
  • 举报
回复
你查下 好像是
select A.name,B.rowcnt from sysobjects A,systabstats B
WHERE A.id=B.id
and A.type='U'
这样写吧

具体表名记不得了 不过取系统表之前一定记得runstats 要不然数据不准

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧