查用户表

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 数据库下所有表结构、数据量及缺失值统计的更多相关文章

  1. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  2. Oracle数据库之创建表结构

    Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...

  3. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  4. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  5. 如何导出远程oracle数据库中的表结构

    从远程oracle数据库上导出指定表的表结构语句有两种方法: 方法一:通过sql语句获得 1,make sure that you can connect the remote database. 2 ...

  6. SQL查看数据库中每张表的数据量和总数据量

    查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...

  7. 使用sql developer 导出Oracle数据库中的表结构

    MS SQLServer的客户端工具做的的确比较好,直接右键,导出数据库就OK了,而且MS的客户端导出的是xxx.dbf文件,直接附加到别的数据库上就OK了 Oracle的sql developer就 ...

  8. SQLSERVER:计算数据库中各个表的数据量和每行记录所占用空间

    转:http://www.cnblogs.com/lyhabc/p/3828496.html CREATE TABLE #tablespaceinfo ( nameinfo ) , rowsinfo ...

  9. mysql 查看某个数据库中所有表的数据量

    1.登录mysql 2.使用命令:use information_schema; 3.使用命令:select table_name,table_rows from tables where TABLE ...

随机推荐

  1. MSYQL主从复制-Gtid方式

    目录 1.MYSQL主从复制-Gtid方式 1.环境准备 2.Master配置 3.Slave配置 4.报错&解决 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和 ...

  2. txt换行追加写入

    with open(negative_txt, 'a') as f: patch_name1 = patch_name + '\n' f.write(patch_name1)

  3. AcWing 32. 调整数组顺序使奇数位于偶数前面

    习题地址 https://www.acwing.com/solution/acwing/content/2921/ 输入一个整数数组,实现一个函数来调整该数组中数字的顺序. 使得所有的奇数位于数组的前 ...

  4. Mybatis框架增删改查

    一.recourses中核心配置文件mybatis-config.xml 二. recourse中jdbc.properties 三.entity实体类 四.ISmbmsUserDao层 五.ISmb ...

  5. 1+X证书web前端开发中级对应课程分析

    官方QQ群 1+x 证书 Web 前端开发 JavaScript 专项练习 http://blog.zh66.club/index.php/archives/198/ 1+x 证书 Web 前端开发初 ...

  6. 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开

    目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...

  7. 为什么不允许使用 Java 静态构造函数?

    不允许使用 Java 静态构造函数,但是为什么呢?在深入探讨不允许使用静态构造函数的原因之前,让我们看看如果要使 构造函数静态化 会发生什么. Java 静态构造函数 假设我们有一个定义为的类: pu ...

  8. nodejs环境下的socket通信

    结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...

  9. PI对于两个SAP客户端通道的了解

    你把你的报文放到ESR的MM里面试一下就知道了 日期格式之类的,可能有转换的你要输入2019-05-13这种 OA到PI不选,都是到一个系统,由PI再来分流 如果你要做成由OA来选的,就要参考类似于  ...

  10. 再来五道剑指offer题目

    再来五道剑指offer题目 6.旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...