轻松取得建表和索引的DDL语句
从数据字典中获得DDL语句是经常要用的,特别是在系统升级/重建的时候。在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL语句。最好不过的是因为它使用起来很简单。
1、获得单个表和索引DDL语句的方法:
set heading off;
set echo off;
Set pages 999;
set long 90000;
spool get_single.sql
select dbms_metadata.get_ddl("TABLE","SZT_PQSO2","SHQSYS") from dual; select dbms_metadata.get_ddl("INDEX","INDXX_PQZJYW","SHQSYS") from dual;
spool off;
下面是输出。我们只要把建表/索引语句取出来在后面加个分号就可以直接运行了。
SQL> select dbms_metadata.get_ddl("TABLE","SZT_PQSO2","SHQSYS") from dual;
CREATE TABLE "SHQSYS"."SZT_PQSO2"
( "PQBH" VARCHAR2(32) NOT NULL ENABLE,
"ZJYW" NUMBER(10,0),
"CGSO" NUMBER(10,0) NOT NULL ENABLE,
"SOLS" VARCHAR2(17),
"SORQ" VARCHAR2(8),
"SOWR" VARCHAR2(8),
"SOCL" VARCHAR2(6),
"YWHM" VARCHAR2(10),
"YWLX" VARCHAR2(6)
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "DATA1"
SQL> select dbms_metadata.get_ddl("INDEX","INDXX_PQZJYW","SHQSYS") from dual;
CREATE INDEX "SHQSYS"."INDXX_PQZJYW" ON "SHQSYS"."SZT_PQSO2" ("ZJYW")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "DATA1"
SQL>
SQL> spool off;
2、获得整个SCHEMA DDL语句的方法:
set pagesize 0
set long 90000
set feedback off
set echo off
spool get_schema.sql
connect shqsys/shqsys@hawk1;
SELECT DBMS_METADATA.GET_DDL("TABLE",u.table_name)
FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL("INDEX",u.index_name)
FROM USER_INDEXES u;
spool off;
需要注意的是,当我们的表中有外健(参照约束)时,我们需要判别参照表之间的顺序,确保重建时按照合理的顺序进行。你可以通过查询dba_constraints and dba_cons_columns来确定各表之间的顺序,不再详述。
转载于:https://www.cnblogs.com/lsp_jlu/archive/2005/06/12/173032.html
轻松取得建表和索引的DDL语句相关推荐
- mysql建表2个索引是啥意思_Mysql建表与索引使用规范详解
本篇文章是对Mysql建表和索引使用规范进行了详细的分析介绍,需要的朋友参考下 一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默 ...
- Oracle 学习之建表、索引、同义词以及SQL优化
Oracle 学习之建表.索引.同义词以及SQL优化: 一.Oracle 建表: 1.建表语句: --创建表 create table test ( id varchar2(200) primary ...
- 超全的数据库建表/SQL/索引规范,适合贴在工位上!
背景 因为工作岗位的原因,负责制定了关于后端组数据库的规约规范,作为所有产品线的规范,历经几版的修改,最终形成下边的文本,规范在整个后端执行也有大半年的时间,对于整个团队在开发阶段就减少不恰当的建 ...
- sql datetime 排序_超全的数据库建表/SQL/索引规范,建议贴在工位上!
作者:浮雷来源:juejin.im/post/6871969929365553165 「背景」 因为工作岗位的原因,负责制定了关于后端组数据库的规约规范,作为所有产品线的规范,历经几版的修改,最终形成 ...
- mysql 建表时建立索引_mysql 分享建表和索引的几点规范
一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL. 三. MySQL建表,如果字段等价于外键,应在该字段加索引. ...
- datetime 索引_超全的数据库建表/SQL/索引规范,适合贴在工位上!
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:又一程序员进了ICU:压垮一个家庭,一张结算单就够 个人原创100W+访问量博客:点击前往,查看更多 来源:ht ...
- MySQL建表,DML,DDL,约束,外键策略
创建数据库表 CREATE TABLE student( sno int (6), sname VARCHAR(10), sex CHAR(1), age INT(2), enterdate date ...
- mysql建表索引_Mysql建表+创建索引
创建表时可以直接创建索引,这种方式最简单.方便.其基本形式如下: CREATE TABLE 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], ...... 属性名 数 ...
- mysql附录建表_用CREATE TABLE 语句创建数据表
用CREATE TABLE 语句创建数据表 用 CREATE TABLE 语句创建表.此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单.如我们在第 1 章中使用的 ...
最新文章
- Android application捕获崩溃异常
- 多线程编程(4) - 多线程同步之 Mutex (互斥对象)
- 如何建立自己的知识体系?(摘)
- mysql 按时间分库分表_sharding-jdbc 按时间分库分表
- 【主席树】bzoj1112: [POI2008]砖块Klo
- 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
- 扇贝有道180903每日一句
- 关于富文本编辑器froala editor和百度Ueditor使用问题
- C语言实战--DLL注入器
- Matlab中table2array函数使用
- 玩转Linux操作系统常见操作,包括VMware安装,DHCP,DNS,Sendmail,NCSA验证,Apache,反向代理,webalizer,创建oracle用户,赋权,挂载
- docker搭建FastDFS及遇到的问题解决
- 钢筋穿入女子太阳穴 消防及时破拆将其营救
- AI聊天机器人 — 机遇和挑战并存
- 实训日记(二)——分镜
- 浏览器如何在f12中查看接口地址_经过浏览器中的F12中来查看接口的入参、出参和网页响应时间(新手教程)...
- JPEG算法解密 JPEG原理详解 (转载 by jinchao)
- 软件设计模式学习(十四)外观模式
- 2021年这些高频面试知识点最后再发一次,跳槽薪资翻倍
- UGUI内核大探究(九)Image与RawImage
热门文章
- stm32超声波扫频_基于STM32的脉冲式及扫频式超声波除垢信号源设计
- shell编程最新总结大全
- android震动提示音,android的消息提示(震动与提示音)
- 低功耗wifi soc_36氪首发研发低功耗蓝牙芯片,联睿微完成数千万元A+轮融资
- sql程序调用批处理_批处理学习之常用命令
- 打开excel文件并写入_双击Excel表格文件时只打开程序不能直接打开文件
- 设计和实时视图不一样_三室两厅家装设计,如何打造出不一样的感觉?
- 枚举型是什么类型_金属缠绕垫片如何选用?A、B、C、D型都是什么类型?
- 我的编程能力从什么时候开始突飞猛进
- html语言post下发bin文件,在IIS7中启用html文件的POST请求