[Oracle] dbms_metadata.get_ddl 的使用方法总结
程序员文章站
2024-01-27 18:21:46
dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:复制代码 代码如下:s...
dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。
注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:
set line 200
set pagesize 0
set long 99999
set feedback off
set echo off
1)获得表、索引、视图、存储过程、函数的ddl
select dbms_metadata.get_ddl('table','table_name','table_owner') from dual;
select dbms_metadata.get_ddl('index','index_name','index_owner') from dual;
select dbms_metadata.get_ddl('view','view_name','view_owner') from dual;
select dbms_metadata.get_ddl('procedure','procedure_name','procedure_owner') from dual;
select dbms_metadata.get_ddl('function','function_name','function_owner') from dual;
下面这个脚本用于获得某个schema下所有的表、索引、视图、存储过程、函数的ddl
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
select dbms_metadata.get_ddl('table',u.table_name,u.owner) from dba_tables u;
select dbms_metadata.get_ddl('view',u.view_name,u.owner) from dba_views u;
select dbms_metadata.get_ddl('index',u.index_name,u.owner) from dba_indexes u;
select dbms_metadata.get_ddl('procedure',u.object_name, u.owner,) from dba_objects u where u.object_type = 'procedure';
select dbms_metadata.get_ddl('function',u.object_name, u.owner,) from dba_objects u where u.object_type = 'function';
spool off;
2)获得表空间的ddl
获得单个表空间的ddl:
select dbms_metadata.get_ddl('tablespace','tbs_name') from dual;
获得所有表空间的ddl:
select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
from dba_tablespaces ts;
3)获得用户的ddl
获得单个用户的ddl:
select dbms_metadata.get_ddl('user','epay_user') from dual;
获得所有用户的ddl:
select dbms_metadata.get_ddl('user',u.username)
from dba_users u;
注意:在sqlplus里,为了更好的展示ddl,需要设置如下参数:
复制代码 代码如下:
set line 200
set pagesize 0
set long 99999
set feedback off
set echo off
1)获得表、索引、视图、存储过程、函数的ddl
复制代码 代码如下:
select dbms_metadata.get_ddl('table','table_name','table_owner') from dual;
select dbms_metadata.get_ddl('index','index_name','index_owner') from dual;
select dbms_metadata.get_ddl('view','view_name','view_owner') from dual;
select dbms_metadata.get_ddl('procedure','procedure_name','procedure_owner') from dual;
select dbms_metadata.get_ddl('function','function_name','function_owner') from dual;
下面这个脚本用于获得某个schema下所有的表、索引、视图、存储过程、函数的ddl
复制代码 代码如下:
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
select dbms_metadata.get_ddl('table',u.table_name,u.owner) from dba_tables u;
select dbms_metadata.get_ddl('view',u.view_name,u.owner) from dba_views u;
select dbms_metadata.get_ddl('index',u.index_name,u.owner) from dba_indexes u;
select dbms_metadata.get_ddl('procedure',u.object_name, u.owner,) from dba_objects u where u.object_type = 'procedure';
select dbms_metadata.get_ddl('function',u.object_name, u.owner,) from dba_objects u where u.object_type = 'function';
spool off;
2)获得表空间的ddl
获得单个表空间的ddl:
复制代码 代码如下:
select dbms_metadata.get_ddl('tablespace','tbs_name') from dual;
获得所有表空间的ddl:
复制代码 代码如下:
select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
from dba_tablespaces ts;
3)获得用户的ddl
获得单个用户的ddl:
复制代码 代码如下:
select dbms_metadata.get_ddl('user','epay_user') from dual;
获得所有用户的ddl:
复制代码 代码如下:
select dbms_metadata.get_ddl('user',u.username)
from dba_users u;