Oracle一键查询用户所有表名,表注释,字段名,字段注释,数据类型,长度,是否为空,默认值,主键,获取之后基本能复制出库中所有表结构

 先创建一个翻译默认值的函数



CREATE OR REPLACE FUNCTION ALL_TAB_COLUMNS_DATA_DEFAULT(
   in_owner      varchar2,
   in_table_name varchar2,
   in_column     varchar2
)
RETURN varchar AS
  text_c1 varchar2(32767);
  sql_cur varchar2(2000);
begin
 sql_cur := ' select data_default '||
             ' from all_tab_columns tc '||
             ' where 1=1 '||
             ' and tc.OWNER='''||in_owner||''' '||
             ' and tc.TABLE_NAME='''||in_table_name||''' '||
             ' and tc.COLUMN_NAME='''||in_column||''' '
             ;
 --dbms_output.put_line (sql_cur);
 execute immediate sql_cur into text_c1;
 text_c1 := substr(text_c1, 1, 4000);
 RETURN TEXT_C1; 
END;

执行下面这条语句就行


select a.table_name 表名,a.TABLE_COMMENTS 表注释,a.COLUMN_NAME 字段名,a.COLUMN_COMMENTS 字段注释,a.DATA_TYPE 数据类型,a.NULLABLE 是否能空,a.DATA_LENGTH 长度,b.MORENZHI 默认值,c.COLUMN_NAME 主键 from (
select distinct TABLE_COLUMN.*,
                TABLE_NALLABLE.DATA_TYPE,
                TABLE_NALLABLE.NULLABLE,DATA_LENGTH
  from (select distinct utc.table_name  table_name,
                        utc.comments    table_comments,
                        ucc.column_name column_name,
                        ucc.comments    column_comments
          from user_tab_comments utc, user_col_comments ucc
         where utc.table_name = ucc.table_name
          ) TABLE_COLUMN,
       (select distinct table_name, column_name, nullable, DATA_TYPE,DATA_LENGTH
          from user_tab_cols
         ) TABLE_NALLABLE
 where TABLE_COLUMN.column_name = TABLE_NALLABLE.column_name
   and TABLE_COLUMN.TABLE_NAME = TABLE_NALLABLE.table_name )a left join (
select --tc.OWNER,
       tc.TABLE_NAME,
       tc.COLUMN_NAME,
      -- tc.DATA_DEFAULT,
       ALL_TAB_COLUMNS_DATA_DEFAULT(tc.OWNER,tc.TABLE_NAME,tc.COLUMN_NAME) morenzhi
from all_tab_columns tc
where 1=1

and tc.DATA_DEFAULT is not null) b on a.table_name=b.table_name and a.COLUMN_NAME=b.COLUMN_NAME left join (select table_name ,COLUMN_NAME  from (
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P')) c
on a.table_name=c.table_name and a.COLUMN_NAME=c.COLUMN_NAME--b=默认值c=主键
order by a.table_name

这是查出来的效果

 得到这个结果集之后可以写个脚本复制出所有表结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值