Oracle查询表的ddl,Oracle中获取TABLE的DDL语句的方法

获取表的DDL的方法

在获取表的DDL的时候,可以使用多种方法进行获取:

1、利用 DBMS_METADATA.GET_DDL,获取表的 DDL 语句

2、imp.indexfile

3、impdp.sqlfile

1、利用 DBMS_METADATA.GET_DDL,获取表的 DDL 语句

方法1:

SQL PLUS中执行:

首先运行

set echo off

set heading off

set feedback off

set verify off

set pagesize 0

set linesize 132

define schema=&1

输入schema的名字

然后执行:

define CR=chr(10)

define TAB=chr(9)

col x noprint

col y noprint

SELECT TABLE_NAME Y

,0 X

,'CREATE TABLE ' || RTRIM(TABLE_NAME) || '('

FROM   DBA_TABLES

WHERE  OWNER = UPPER('&schema')

UNION

SELECT TC.TABLE_NAME Y

,COLUMN_ID X

,DECODE(COLUMN_ID, 1, ' ', ' ,') || RTRIM(COLUMN_NAME) || &TAB || &TAB ||

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, ')'), ')')) || &TAB || &TAB ||

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('&schema')

UNION

SELECT TABLE_NAME Y

,999999 X

,')' || &CR || ' STORAGE(' || &CR || ' INITIAL ' || INITIAL_EXTENT || &CR ||

' NEXT ' || NEXT_EXTENT || &CR || ' MINEXTENTS ' || MIN_EXTENTS || &CR ||

' MAXEXTENTS ' || MAX_EXTENTS || &CR || ' PCTINCREASE ' ||

PCT_INCREASE || ')' || &CR || ' INITRANS ' || INI_TRANS || &CR ||

' MAXTRANS ' || MAX_TRANS || &CR || ' PCTFREE ' || PCT_FREE || &CR ||

' PCTUSED ' || PCT_USED || &CR || ' PARALLEL (DEGREE ' ||

RTRIM(DEGREE) || ') ' || &CR || ' TABLESPACE ' ||

RTRIM(TABLESPACE_NAME) || &CR || '/' || &CR || &CR

FROM   DBA_TABLES

WHERE  OWNER = UPPER('&schema')

ORDER  BY 1

,2;

方法2:

set pagesize 0

set long 90000

set feedback off

set echo off

spool table_ddl.sql

select dbms_metadata.get_ddl('TABLE','tablename','username') from dual;

select dbms_metadata.get_ddl('VIEW','viewname','username') from dual;

select dbms_metadata.get_ddl('INDEX','indexname','username') from dual;

spool off;

2、imp.indexfile

1)先导出用户的数据

[oracle@oracle11g ~]$  exp demo/demo file=test.dmp owner=demo log=test.log;

2)从 dump 文件获取这些 DDL 语句

[oracle@oracle11g ~]$  imp demo/demo file=test.dmp fromuser=demo touser=demo indexfile=test.sql;

3、impdp.sqlfile

导出用户数据

[oracle@oracle11g ~]$  expdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp schemas=demo;

获取 DDL 语句

[oracle@oracle11g ~]$  impdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp sqlfile=demo.sql;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Oracle ,可以使用 "DESCRIBE" 或 "DESC" 命令来查看的列信息,其也包括注释信息。 例如: ``` DESCRIBE 名; ``` 或 ``` DESC 名; ``` 另外,也可以使用 "COLUMN" 命令来查询特定列的详细信息,包括注释: ``` COLUMN 列名 FORMAT A50 SELECT COLUMN_NAME, COMMENTS FROM USER_COL_COMMENTS WHERE TABLE_NAME = '名' AND COLUMN_NAME = '列名'; ``` ### 回答2: 在Oracle,可以使用DDL语句获取的注释。DDL是数据库定义语言,包括创建、修改和删除数据库对象的语句。 要获取的注释,可以使用如下的DDL语句: ```sql SELECT COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = '名'; ``` 在这个DDL语句,`USER_TAB_COMMENTS`是Oracle系统提供的一个视图,用于存储的注释信息。这个视图包含了所有用户自定义的注释。`TABLE_NAME`是一个条件,用于指定要查找注释的名称。将该语句的'名'替换为具体的名,就可以获取到该的注释信息。 执行上述的DDL语句后,将返回包含所查询的注释文本的结果集。如果该没有注释,则返回空值。通过解析查询结果,可以获取的注释信息。 需要注意的是,该方法仅适用于获取用户定义的注释信息。如果需要获取系统或其他用户的的注释,需要修改`USER_TAB_COMMENTS`为相应的系统视图,如`ALL_TAB_COMMENTS`。 总之,通过使用DDL语句并指定相关条件,可以获取Oracle数据库的注释信息。 ### 回答3: 在Oracle数据库,可以通过以下DDL语句获取的注释: ```sql SELECT COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = '名'; ``` 其,`USER_TAB_COMMENTS`是系统视图,包含了用户的注释信息。通过将`名`替换为实际的名,可以获取到对应的注释信息。 此外,也可以通过以下DDL语句获取的注释: ```sql SELECT COMMENTS FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = '名' AND OWNER = '用户名'; ``` 其,`ALL_TAB_COMMENTS`是系统视图,包含了所有用户的注释信息。通过将`名`替换为实际的名,将`用户名`替换为实际的用户名,可以获取到指定用户下对应的注释信息。 需要注意的是,以上DDL语句只能获取到用户自己创建的的注释信息,不能获取到系统或其他用户创建的的注释信息。同时,如果没有被注释,以上DDL语句将返回空值。 总之,通过DDL语句可以方便地获取Oracle数据库的注释信息,根据不同的用户权限和的所属关系,选择相应的系统视图进行查询即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值