• 如何导出Oracle一个用户中所有表的表结构~


    一、

    exp userid=bx81/bx81 owner=bx81;
    imp userid=bx81/bx81 full=y indexfile=bx8.sql;

    注意着时imp并没有真正写入数据库,而是将DDL写在bx8.sql里。

    二、用下面的脚本可以生成某个用户下的表的DDL语句:

    set arraysize 1
    set echo off
    set heading off
    set feedback off
    set verify off
    set pagesize 0
    set linesize 79
    define 1 = &&SCHEMA_NAME
    spool tbl_&&SCHEMA_NAME
    set termout off
    col x noprint
    col y noprint
    select  'rem   ****    Create Table DDL for '||chr(10)||
            'rem   ****    '||username||''''||'s tables'||chr(10)||chr(10)
    from    dba_users
    where   username      = upper ('&&1')
    /
    select  table_name y,
            0 x,
            'create table ' ||
            rtrim(table_name) ||
            '('
    from    dba_tables
    where     owner = upper('&&1')
    union
    select  tc.table_name y,
            column_id x,
            rtrim(decode(column_id,1,null,','))||
            rtrim(column_name)|| ' ' ||
            rtrim(data_type) ||
            rtrim(decode(data_type,'DATE',null,'LONG',null,
                   'NUMBER',decode(to_char(data_precision),null,null,'('),
                   '(')) ||
            rtrim(decode(data_type,
                   'DATE',null,
                   'CHAR',data_length,
                   'VARCHAR2',data_length,
                   'NUMBER',decode(to_char(data_precision),null,null,
                     to_char(data_precision) || ',' || to_char(data_scale)),
                   'LONG',null,
                   '******ERROR')) ||
            rtrim(decode(data_type,'DATE',null,'LONG',null,
                   'NUMBER',decode(to_char(data_precision),null,null,')'),
                   ')')) || ' ' ||
            rtrim(decode(nullable,'N','NOT NULL',null))
    from    dba_tab_columns tc,
            dba_objects o
    where   o.owner = tc.owner
    and     o.object_name = tc.table_name
    and     o.object_type = 'TABLE'
    and     o.owner = upper('&&1')
    union
    select  table_name y,
            999999 x,
            ')'  || chr(10)
            ||' STORAGE('                           || chr(10)
            ||' INITIAL '    || initial_extent      || chr(10)
            ||' NEXT '       || next_extent         || chr(10)
            ||' MINEXTENTS ' || min_extents         || chr(10)
            ||' MAXEXTENTS ' || max_extents         || chr(10)
            ||' PCTINCREASE '|| pct_increase        || ')' ||chr(10)
            ||' INITRANS '   || ini_trans         || chr(10)
            ||' MAXTRANS '   || max_trans         || chr(10)
            ||' PCTFREE '    || pct_free          || chr(10)
            ||' PCTUSED '    || pct_used          || chr(10)
            ||' PARALLEL (DEGREE ' || DEGREE || ') ' || chr(10)
            ||' TABLESPACE ' || rtrim(tablespace_name) ||chr(10)
            ||'/'||chr(10)||chr(10)
    from    dba_tables
    where   owner = upper('&&1')
    order by 1,2
    /

    三、

    使用第三方的工具,如TOAD,会便利一些。

  • 相关阅读:
    我喜欢的女孩有了男友 :(
    两个月后,我又回来了。
    准备辞职,想看看老板知道我要辞职之后的表情。
    已经交了辞职报告,今天下午跟老板谈一谈。
    上班第十天
    一年了,回来看看。
    上班第十一天
    领到了离职通知单
    对上班失去了兴趣
    还没有拿到回家的火车票,惨了啊。
  • 原文地址:https://www.cnblogs.com/longware/p/13382482.html
Copyright © 2020-2023  润新知