一. 不要求数据准确
select t.table_name,t.num_rows from user_tables t;
二.暴力破解法
首先使用下列语句生成每张表的统计sql语句
select 'select '''||t.table_name||''',count(*) from '||t.table_name||';'
from user_tables t;
可以执行生成的所有的sql语句,这样就能得到想要的,但是太暴力了.
我选择使用spool将结果导出 : 创建spool.sql脚本文件,文件命名可以随意的
SPOOL D:\count_rows.csv --选择结果输出路径
set echo off --命令不显示在命令窗口
set feedback off --不显示已选择行数
set term off --不显示脚本内容
set heading off--不显示列名
set linesize 500 --设置每行最大长度
--这里填上想要执行的sql语句,也就是生产的select语句
SPOOL off
统计结果就在csv文件中
三. 新建一个function统计
新建一个名为count_rows的function
create or replace function count_rows(table_name in varchar2) return number is
num_rows number;
begin
execute immediate 'select count(*) from ' || table_name
into num_rows;
return(num_rows);
end count_rows;
执行以下select语句能够得到想要的
select t.table_name, count_rows(t.table_name) nrows from user_tables t