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 ...
随机推荐
- Druid-代码段-1-4
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.3,连接可用性测试: //数据库连接可用性测试 protected boolean testConnectionInte ...
- acwing 471. 棋盘 解题记录
题解地址 https://www.acwing.com/problem/content/description/473/ 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的. 你现 ...
- 漫长的 windows caffe编译过程 (OnlyCpu)
在windows下 编译caffe代码. 官方推荐是vs2013 而我手头只有VS2017 .准备开始下载代码开始编译. 1 代码下载 windows版本的代码有两份,一份是官方的编译的windows ...
- java之API初识
API概念 API(Application Programming Interface),应用程序编程接口.JavaAPI是一本程序员的字典 ,是JDK中提供给 我们使用的类的说明文档.这些类将底层的 ...
- SPOJ2829 TLE-Time Limit Exceeded
题目链接--SPOJ 题目链接--洛谷 problem 给出n,m和一个长度为n的数列c.求有多少个数列a满足以下条件: \(1\le a_i < 2^m\) \(a_i\&a_{i-1 ...
- React中添加注释
React中的注释,其实确切来讲是jsx中的注释: {/*单行注释*/} {/* 多 行 注 释 */}
- Paper | Non-local Neural Networks
目录 1. 动机 2. 相关工作 3. Non-local神经网络 3.1 Formulation 3.2 具体实现形式 3.3 Non-local块 4. 视频分类模型 4.1 2D ConvNet ...
- #3144. 「APIO 2019」奇怪装置
#3144. 「APIO 2019」奇怪装置 题目描述 考古学家发现古代文明留下了一种奇怪的装置.该装置包含两个屏幕,分别显示两个整数 \(x\) 和 \(y\). 经过研究,科学家对该装置得出了一个 ...
- python接口自动化7-post文件上传
前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...
- pytorch-argparse的用法
import argparse def parse(): parser = argparse.ArgumentParser() parser.add_argument('--scales',help= ...