[20211122]完善descx.sql脚本.txt --// 按照tpt descx.sql脚本修改一下,增加一些功能,我主要不想使用display_raw函数,而且还有许多系统使用11g,无法在sql语句中定义函数。 --// 另外就是我们生产系统表字段太多了,有必要加入一些过滤,显示特定字段。 $ cat descz.sql -- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions. COL desc_column_id HEAD "Col#" FOR A4 COL desc_column_name HEAD "Column Name" FOR A30 COL desc_data_type HEAD "Type" FOR A20 WORD_WRAP COL desc_nullable HEAD "Null?" FOR A10 COL desc_density HEAD "Density" FOR 9.99999999999 COL desc_owner HEAD Owner FOR A10 COL desc_table_name HEAD Table_Name FOR A20 COL trans_low HEAD "Low_value" FOR A40 COL trans_high HEAD "High_value" FOR A40 prompt eXtended describe of &1 PROMPT PROMPT DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION. PROMPT INPUT OWNER.TABLE_NAME <filters> PROMPT SAMPLE : @ TAB_LH TABLE_NAME "column_id between 3 and 5" PROMPT IF NOT INPUT <filters> ,USE "1=1" . PROMPT break on desc_owner on desc_table_name skip 1 SELECT owner desc_owner, table_name desc_table_name, CASE WHEN hidden_column = 'YES' THEN 'H' ELSE ' ' END|| LPAD(column_id,3) desc_column_id, column_name desc_column_name, CASE WHEN nullable = 'N' THEN 'NOT NULL' ELSE NULL END AS desc_nullable, data_type||CASE -- WHEN data_type = 'NUMBER' THEN '('||data_precision||CASE WHEN data_scale = 0 THEN NULL ELSE ','||data_scale END||')' WHEN data_type = 'NUMBER' THEN '('||data_precision||','||data_scale||')' ELSE '('||data_length||')' END AS desc_data_type, -- data_default, num_distinct, density desc_density, num_nulls, CASE WHEN histogram = 'NONE' THEN null ELSE histogram END histogram, num_buckets, CASE WHEN data_type IN ('CHAR', 'VARCHAR2') THEN UTL_RAW.cast_to_varchar2 (low_value) WHEN data_type = 'NUMBER' THEN TO_CHAR (UTL_RAW.cast_to_number (low_value)) WHEN data_type = 'DATE' THEN RTRIM ( LTRIM ( TO_CHAR ( 100 * ( TO_NUMBER (SUBSTR (low_value, 1, 2), 'XX') - 100) + (TO_NUMBER (SUBSTR (low_value, 3, 2), 'XX') - 100), '0000')) || '-' || LTRIM ( TO_CHAR (TO_NUMBER (SUBSTR (low_value, 5, 2), 'XX'), '00')) || '-' || LTRIM ( TO_CHAR (TO_NUMBER (SUBSTR (low_value, 7, 2), 'XX'), '00')) || ' ' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (low_value, 9, 2), 'XX') - 1, '00')) || ':' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (low_value, 11, 2), 'XX') - 1, '00')) || ':' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (low_value, 13, 2), 'XX') - 1, '00'))) END trans_low, CASE WHEN data_type IN ('CHAR', 'VARCHAR2') THEN UTL_RAW.cast_to_varchar2 (high_value) WHEN data_type = 'NUMBER' THEN TO_CHAR (UTL_RAW.cast_to_number (high_value)) WHEN data_type = 'DATE' THEN RTRIM ( LTRIM ( TO_CHAR ( 100 * ( TO_NUMBER (SUBSTR (high_value, 1, 2), 'XX') - 100) + (TO_NUMBER (SUBSTR (high_value, 3, 2), 'XX') - 100), '0000')) || '-' || LTRIM ( TO_CHAR (TO_NUMBER (SUBSTR (high_value, 5, 2), 'XX'), '00')) || '-' || LTRIM ( TO_CHAR (TO_NUMBER (SUBSTR (high_value, 7, 2), 'XX'), '00')) || ' ' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (high_value, 9, 2), 'XX') - 1, '00')) || ':' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (high_value, 11, 2), 'XX') - 1, '00')) || ':' || LTRIM ( TO_CHAR ( TO_NUMBER (SUBSTR (high_value, 13, 2), 'XX') - 1, '00'))) END trans_high --,'--' desc_succeeded FROM dba_tab_cols WHERE upper(table_name) LIKE upper(CASE WHEN INSTR('&1','.') > 0 THEN SUBSTR('&1',INSTR('&1','.')+1) ELSE '&1' END ) AND owner LIKE CASE WHEN INSTR('&1','.') > 0 THEN UPPER(SUBSTR('&1',1,INSTR('&1','.')-1)) ELSE user END --AND column_name = decode('&&2','',column_name,upper('&&2')) AND ( &&2 ) ORDER BY owner, table_name, column_id / 1.环境: SCOTT@book> @ ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SCOTT@book> create index i_emp_hiredate on emp(trunc(hiredate)); Index created. 2.测试: SCOTT@book> @ descz scott.emp 1=1 eXtended describe of scott.emp DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION. INPUT OWNER.TABLE_NAME <filters> SAMPLE : @ TAB_LH TABLE_NAME "column_id between 3 and 5" IF NOT INPUT <filters> ,USE "1=1" . Owner Table_Name Col# Column Name Null? Type NUM_DISTINCT Density NUM_NULLS HISTOGRAM NUM_BUCKETS Low_value High_value ---------- -------------------- ---- ------------------------------ ---------- -------------------- ------------ -------------- ---------- --------------- ----------- ---------------------------------------- ---------------------------------------- SCOTT EMP 1 EMPNO NOT NULL NUMBER(4,0) 14 .07142857143 0 1 7369 7934 2 ENAME VARCHAR2(10) 14 .07142857143 0 1 ADAMS WARD 3 JOB VARCHAR2(9) 5 .20000000000 0 1 ANALYST SALESMAN 4 MGR NUMBER(4,0) 6 .16666666667 1 1 7566 7902 5 HIREDATE DATE(7) 13 .07692307692 0 1 1980-12-17 00:00:00 1987-05-23 00:00:00 6 SAL NUMBER(7,2) 12 .08333333333 0 1 800 5000 7 COMM NUMBER(7,2) 4 .25000000000 10 1 0 1400 8 DEPTNO NUMBER(2,0) 3 .33333333333 0 1 10 30 H SYS_NC00009$ DATE(7) -- :: -- :: 9 rows selected. --//分析表。 SCOTT@book> @ descz emp "column_name='SAL' or hidden_column='YES'" eXtended describe of emp DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION. INPUT OWNER.TABLE_NAME <filters> SAMPLE : @ TAB_LH TABLE_NAME "column_id between 3 and 5" IF NOT INPUT <filters> ,USE "1=1" . Owner Table_Name Col# Column Name Null? Type NUM_DISTINCT Density NUM_NULLS HISTOGRAM NUM_BUCKETS Low_value High_value ---------- -------------------- ---- ------------------------------ ---------- -------------------- ------------ -------------- ---------- --------------- ----------- ---------------------------------------- ---------------------------------------- SCOTT EMP 6 SAL NUMBER(7,2) 12 .08333333333 0 1 800 5000 H SYS_NC00009$ DATE(7) 13 .07692307692 0 1 1980-12-17 00:00:00 1987-05-23 00:00:00 SCOTT@book> @ descz emp "column_id between 3 and 5" eXtended describe of emp DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION. INPUT OWNER.TABLE_NAME <filters> SAMPLE : @ TAB_LH TABLE_NAME "column_id between 3 and 5" IF NOT INPUT <filters> ,USE "1=1" . Owner Table_Name Col# Column Name Null? Type NUM_DISTINCT Density NUM_NULLS HISTOGRAM NUM_BUCKETS Low_value High_value ---------- -------------------- ---- ------------------------------ ---------- -------------------- ------------ -------------- ---------- --------------- ----------- ---------------------------------------- ---------------------------------------- SCOTT EMP 3 JOB VARCHAR2(9) 5 .20000000000 0 1 ANALYST SALESMAN 4 MGR NUMBER(4,0) 6 .16666666667 1 1 7566 7902 5 HIREDATE DATE(7) 13 .07692307692 0 1 1980-12-17 00:00:00 1987-05-23 00:00:00
[20211122]完善descx.sql脚本.txt
来源:这里教程网
时间:2026-03-03 17:16:17
作者:
编辑推荐:
- [20211122]完善descx.sql脚本.txt03-03
- “一个人”老了,应该如何养老03-03
- 剪切后的文件可以恢复吗?恢复剪切文件怎么办?03-03
- [20211123]sqlplus @与@@的区别.txt03-03
- 文件被隐藏了怎么恢复?读完你就知道了03-03
- OGG的抽取进程合并03-03
- [20211123]完善expand sql text.txt03-03
- 还原分区失败怎么办?为什么会出现还原分区失败03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 剪切后的文件可以恢复吗?恢复剪切文件怎么办?
剪切后的文件可以恢复吗?恢复剪切文件怎么办?
26-03-03 - 文件被隐藏了怎么恢复?读完你就知道了
文件被隐藏了怎么恢复?读完你就知道了
26-03-03 - OGG的抽取进程合并
OGG的抽取进程合并
26-03-03 - 还原分区失败怎么办?为什么会出现还原分区失败
还原分区失败怎么办?为什么会出现还原分区失败
26-03-03 - 怎么备份分区表?还原备份表怎么操作?
怎么备份分区表?还原备份表怎么操作?
26-03-03 - SD卡分区时需要注意什么?SD卡分区注意事项
SD卡分区时需要注意什么?SD卡分区注意事项
26-03-03 - Transaction recovery: lock conflict caught and ignored
- PSD文件误删了怎么恢复?教你三招
PSD文件误删了怎么恢复?教你三招
26-03-03 - 删除的PSD文件在哪可以恢复?一定要看看
删除的PSD文件在哪可以恢复?一定要看看
26-03-03 - PDF不小心删掉了怎么恢复?三步专业恢复
PDF不小心删掉了怎么恢复?三步专业恢复
26-03-03
