获取表的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;
编辑推荐:
- Oracle中获取TABLE的DDL语句的方法03-03
- dba_tables视图学习03-03
- dba_objects视图03-03
- OGG19C学习1-配置Manager和网络通信03-03
- 记一次惨败的Oracle DBA面试经历03-03
- 不会用管理工具,怎么做项目经理?03-03
- 收集统计信息的隐患——产生硬解析03-03
- DB兄”医院”历险记03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 记一次惨败的Oracle DBA面试经历
记一次惨败的Oracle DBA面试经历
26-03-03 - 不会用管理工具,怎么做项目经理?
不会用管理工具,怎么做项目经理?
26-03-03 - DB兄”医院”历险记
DB兄”医院”历险记
26-03-03 - Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持
- Oracle direct path read相关隐含参数
Oracle direct path read相关隐含参数
26-03-03 - golden gate同步的表结构修改检查
golden gate同步的表结构修改检查
26-03-03 - Oracle 20c 新特性:Online SecureFiles Defragmentation 在线的 LOB 碎片整理
- 项目管理工具,选择本地部署还是上云?
项目管理工具,选择本地部署还是上云?
26-03-03 - 外键无索引引发的血案
外键无索引引发的血案
26-03-03 - Oracle RAC实施方案详细说明-GI安装04
Oracle RAC实施方案详细说明-GI安装04
26-03-03
