mysql-oracle查询所有表的记录数
来源:互联网 发布:欠淘宝贷款50万 编辑:程序博客网 时间:2024/05/29 03:47
此前做一个mysql到oracle的数据迁移,做完之后为了简单的判断数据是否有丢失,就使用了这个数据量的对比方法。但是发现mysql和oracle查出来的数据量竟然不一致,吓死了,还以自己写的程序有bug,后来仔细对比了一张表的记录,数据量又是一致的,反而用mysql的那个table_rows的方法查出来对应表的数据少那么几十条,然后我就想到还是别用mysql自带的东西了,用原生的语句来查一把,下面分享一下我的这段经历吧。
mysql数据量查询
首先贴出我的数据表。
在网上搜索了很多答案,基本上如出一辙。看下列结果,很明显,不正确。
select table_schema,table_name,table_rows from information_schema.tables t WHERE t.TABLE_SCHEMA = 'test'order by table_rows desc;
这里我就开始怀疑mysql提供的这个东西有问题,于是就用原始的方法:写一个存储过程,先查询出所有的表,然后使用count(*)查询这些表的记录,接着把这张表以及对应记录数存到一张temp表里面,最后再把这张temp表的数据全部查出来。
CREATE PROCEDURE `tables_row`()BEGIN DECLARE l_last_row INT DEFAULT 0; declare tnames VARCHAR(200);# 临时表名 DECLARE count2 int;# 临时数据量 declare fetchSeqCursor cursor for select table_name from information_schema.TABLES where table_schema='test' order by table_name DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row=1; create temporary table if not exists tmpTable ( tableName varchar(255) primary key, tablerow int ); truncate TABLE tmpTable; OPEN fetchSeqCursor; FETCH fetchSeqCursor into tnames; while l_last_row != 1 do set @sql1 = CONCAT('SELECT count(*) into @count_tmp from ' ,tnames); prepare stmt from @sql1; EXECUTE stmt ; set count2 = @count_tmp; SET @sql2 = CONCAT('INSERT INTO tmpTable VALUES(','\'',tnames,'\'',',',count2,')'); PREPARE stmt2 from @sql2; EXECUTE stmt2; FETCH fetchSeqCursor into tnames; end WHILE; CLOSE fetchSeqCursor; SELECT * from tmpTable order by tableName DESC;END
oracle数据量查询
oracle查询数据库的数据量就相对比较简单了,可以直接使用oracle内置的方法
select table_name,num_rows from user_tables ORDER BY num_rows DESC;
如果这个语句报错,无法找到num_rows,可以添加如下函数
CREATE OR REPLACE FUNCTION count_rows(table_name in varchar2) RETURN NUMBERASnum_rows number;stmt varchar2(2000);BEGIN stmt := 'select count(*) from '||table_name; execute immediate stmt into num_rows; return num_rows;END;
然后再调用这个函数
select table_name,count_rows(table_name) from user_tables ORDER BY num_rows DESC;
3 0
- mysql-oracle查询所有表的记录数
- oracle查询所有表的记录数
- Oracle 查询所有表的记录数
- oracle查询所有表的表名+注释+记录数
- Oracle查询数据库中所有表的记录数
- 转至Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- oracle查询所有表的记录数SQL
- Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- MySQL 查询所有表中的记录数
- 查询数据库所有表的记录数
- sql查询所有表的记录数
- Oracle查询数据库中当前登录用户所有表的记录数
- Oracle查询每张表的记录数
- 数据库查询 所有表 以及 表的记录数
- 查询数据库所有表的记录数(sqlserver)
- 线段树模板及技巧分析
- kafka+zookeeper+storm+hdfs实现日志处理
- [JAVA · 初级]:10.如何更好的理解多态
- spring 中属性scope 的prototype(有状态)和singleton(无状态)
- HDFS-1
- mysql-oracle查询所有表的记录数
- 走进语音识别中的WFST(一)
- JavaSE知识集锦(2)序列化与反序列化
- (记录向)reactjs学习记录
- Leetcode之Set Matrix Zeroes
- 3365: [Usaco2004 Feb]Distance Statistics 路程统计|树的点分治
- 快速排序法
- Cpp--string常用函数用法总结
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享