oracle 数据库下所有表结构、数据量及缺失值统计
查用户表
select * from all_tab_comments --查询所有用户的表,视图等。
select * from all_col_comments --查询所有用户的表的列名和注释。
select * from all_tab_columns --查询所有用户的表的列名等信息。 select * from user_tab_comments --查询本用户的表,视图等。
select * from user_col_comments --查询本用户的表的列名和注释。
select * from user_tab_columns --查询本用户的表的列名等信息。 select * from all_tab_partitions
select * from user_tab_partitions --ORACLE下有三个视图
DBA_TABLES --拥有DBA角色的用户可以查看系统中的所有表
USER_TABLES --登录数据库的当前用户拥有的所有表
ALL_TABLES --登录数据库的当前用户有权限查看的所有表
表结构
SELECT
t1.TABLE_NAME,
t1.COLUMN_NAME,
t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')',
t2.COMMENTS
-- missing_count(t1.TABLE_NAME, t1.COLUMN_NAME) counts
FROM
USER_TAB_COLS t1, USER_COL_COMMENTS t2
WHERE
t1.TABLE_NAME = t2.TABLE_NAME
AND t1.COLUMN_NAME = t2.COLUMN_NAME
ORDER BY
t1.TABLE_NAME, t1.COLUMN_NAME
参考资料:oracle数据库导出所有表结构
数据量
直接执行下面代码
select t.table_name, t.num_rows from user_tables t
如果上述代码无法得到结果,或数据不全,可执行下述代码
-- 新建函数
create or replace function count_rows(table_name in varchar2,
owner in varchar2 default null)
return number authid current_user IS
num_rows number;
stmt varchar2(2000);
begin
if owner is null then
stmt := 'select count(*) from "' || table_name || '"';
else
stmt := 'select count(*) from "' || owner || '"."' || table_name || '"';
end if; execute immediate stmt into num_rows;
return num_rows;
end; -- 查询
select table_name, count_rows(table_name) nrows from user_tables
参考资料:Oracle查询数据库中所有表的记录数
缺失值统计
经测试,未建立索引时,5000万数据量,使用sum(decode())用时82s,而使用count where用时105s,显然,sum(decode()) 效率更高;建立索引之后,前者用时7.57s,后者用时8.564s,此时count where效率更高。综合来看,推荐使用sum(decode()).
-- 缺失值统计函数
create or replace function missing_count(table_name in varchar2,
col_name in varchar2,
owner in varchar2 default null)
return number authid current_user IS
counts number;
stmt varchar2(2000);
begin
if owner is null then
stmt := 'select sum(decode(' || col_name || ', null, 1, 0)) from ' || table_name;
--stmt := 'select count(*) from ' || table_name || ' where ' || col_name || ' is null';
else
stmt := 'select sum(decode(' || col_name || ', null, 1, 0)) from ' || owner || '.' || table_name;
--stmt := 'select count(*) from ' || owner || '.' || table_name || ' where ' || col_name || ' is null';
end if; execute immediate stmt into counts;
return counts;
end; -- 应用见-表结构
参考链接:python 连接 oracle 统计指定表格所有字段的缺失值数
oracle 数据库下所有表结构、数据量及缺失值统计的更多相关文章
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- Oracle数据库之创建表结构
Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- 如何导出远程oracle数据库中的表结构
从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2 ...
- SQL查看数据库中每张表的数据量和总数据量
查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...
- 使用sql developer 导出Oracle数据库中的表结构
MS SQLServer的客户端工具做的的确比较好,直接右键,导出数据库就OK了,而且MS的客户端导出的是xxx.dbf文件,直接附加到别的数据库上就OK了 Oracle的sql developer就 ...
- SQLSERVER:计算数据库中各个表的数据量和每行记录所占用空间
转:http://www.cnblogs.com/lyhabc/p/3828496.html CREATE TABLE #tablespaceinfo ( nameinfo ) , rowsinfo ...
- mysql 查看某个数据库中所有表的数据量
1.登录mysql 2.使用命令:use information_schema; 3.使用命令:select table_name,table_rows from tables where TABLE ...
随机推荐
- 公司员工表示 nginx 之父被警方带走
ZDNet 12 日报导,俄罗斯警方当天突击搜查了 NGINX 公司(nginx 服务器项目商业化公司)在莫斯科的办事处,并带走了 NGINX 公司联合创始人 Igor Sysoev 与 Maxim ...
- Educational Codeforces Round 71 (Rated for Div. 2)
传送门 A.There Are Two Types Of Burgers 签到. B.Square Filling 签到 C.Gas Pipeline 每个位置只有"高.低"两种状 ...
- SpringCloud单元测试【六】
SpringCloud的单元测试主要是依靠 Mock以及Mockito, 所以我们需要对Mock以及Mockito有一定的认识. 一.为什么要用MockMvc 可能我们在测试控制层的代码都是启动服务器 ...
- rowKey原则
rowKey设计原则 1.长度原则 最大值为64KB, 长度在10 ~ 100byte ; 最好是 8 的倍数,太长会影响性能: 2.唯一原则 具有唯一性: 3.散列原则 1).盐值散列:不能使用时间 ...
- npm install 提示 `gyp: No Xcode or CLT version detected!` MacOS 10.15
https://github.com/nodejs/node-gyp/issues/569 https://github.com/nodejs/node-gyp/issues/1927 解决链接:ht ...
- C语言中,关于排序的问题(输入n个数,输出最大的那个)
int n,max=0,t; scanf("%d",&n); int a[n],i,k; //这个a[n]必须要在输入n的值之后才能定义,不然定义不成. for(i=1; ...
- spring+eureka+zuul
最近在看一个关于spring+eureka+zuul的教学视频,终于明白了eureka是用于提供服务注册和发现的service,通过eureka各个service可以知道其他service,这样就隔离 ...
- python接口自动化9-ddt数据驱动
前言 ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常.异常的数据进行登录. 实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据 一.ddt 1.安装:p ...
- Linux进程和计划任务实践
1.显示统计占用系统内存最多的进程,并排序. 方法一 [root@test ~]#ps aux --sort=%mem USER PID %CPU %MEM VSZ RSS TTY STAT STAR ...
- Python 十大装 X 语法(二)
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手.不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了.本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并 ...