第二个灵魂 发表于 2015-1-16 22:39:37

MYSQL编程:ORACLE猎取DDL的几种经常使用的办法

MySQLAB公司的一个高级开发者者表示,“这个特点使得MySQL可以根据你当前的系统的需要来进行调整。”oracle
ORACLE猎取DDL的几种经常使用的办法



刘颖博

工夫:2004-2-26

mail:liuyingbo@126.com,请斧正



转载请说明出处及作者



大致的分为三种办法:

一;能够经由过程toad、plsqldevelop品级三方工具举行导出DLL操纵,用这类举措的优点在于操纵复杂便利,但必要安装,上面复杂先容一下用这两个工具取得DLL语句的操纵。



1.起首是toad工具,能够到www.quest.com网站高低载

操纵步骤的扼要先容以下:

a.启动toad,毗连方针数据库

b.点击DBA->GenerateSchemaScript,如所示:





c.呈现的操纵界面:





经由过程操纵界面已很分明的,选择响应的Schema,固然能够经由过程其他的几个tab页面选择响应的前提,点击Execute按钮,ok。具体的操纵就不说了!

d.当导出操纵停止后,会呈现如的界面





我们能够将导出的DDL剧本另存(SavetoFile)大概copy到剪贴板上(Clipboard)。

2.上面说一下别的的一个工具plsqldevelop是怎样举行到出DDL语句的

操纵步骤以下:

a.启动plsqldevelop,毗连方针数据库

b.点击Tools->ExportTables,如





c.然后呈现上面界面,如





d.在如的界面上,选择响应的内容,然后点击Export按钮,ok,会呈现界面如,实在这些工具也是挪用Oracle的Exp工具罢了





假如你没有指定文件目次,文件会呈现在plsqldevelop软件的安装目次下。

好,上面先容第二种办法

二;间接经由过程EXP/IMP工具

Oracle供应的最原始最有用的导进导收工具,我们大致上能够分为三种举措完成导出DDL。

a.经由过程imp指定indexfile参数,但这类举措不爽在于有每行前会有REM

语法大致以下:

expuserid=...tables=emprows=nfile=emp.dmp
impuserid=...file=emp.dmpindexfile=emp.sql

b.经由过程imp指定show=y,同时指定log参数,格局上也不是很爽,在格局上很美妙的仍是经由过程工具导出的对照美妙

语法大致以下:

expuserid=...tables=emprows=nfile=emp.dmp
impuserid=...file=emp.dmpshow=ylog=emp.sql

c.使用unix下有strings命令,语法大致以下,这类办法对照文明:

expuserid=...tables=tab1rows=nfile=tab1.dmp
stringsemp.dmp>emp.sql
emp.sql中就有DLL语句了

第三种办法,是使用oracle9i的新特征,就是DBMS_METADATA包,来失掉DLL语句,这个也是本文要先容的重点

三;经由过程9i的DBMS_METADATA包失掉DLL语句

基础上用到的语法以下:

a.猎取单个的建表和建索引的语法

setheadingoff;
setechooff;
Setpages999;
setlong90000;

spoolDEPT.sql
selectdbms_metadata.get_ddl(TABLE,DEPT,SCOTT)fromdual;
selectdbms_metadata.get_ddl(INDEX,DEPT_IDX,SCOTT)fromdual;
spooloff;



b.猎取一个SCHEMA下的一切建表和建索引的语法,以scott为例:

setpagesize0

setlong90000

setfeedbackoff

setechooff
spoolscott_schema.sql
connectscott/tiger;
SELECTDBMS_METADATA.GET_DDL(TABLE,u.table_name)
FROMUSER_TABLESu;
SELECTDBMS_METADATA.GET_DDL(INDEX,u.index_name)
FROMUSER_INDEXESu;
spooloff;



c.猎取某个SCHEMA的建全体存储历程的语法

connectbrucelau/brucelau;

spoolprocedures.sql


select
DBMS_METADATA.GET_DDL(PROCEDURE,u.object_name)

from
user_objectsu

where
object_type=PROCEDURE;


spooloff;



另:

dbms_metadata.get_ddl(TABLE,TAB1,USER1)
三个参数中,第一个指定导出DDL界说的工具范例(此例中为表范例),第二个是工具名(此例中即表名),第三个是工具地点的用户名。



参考:

ZDNetChina《轻松获得Oracle布局形貌句法》

Oracle的官方文档





感激shangym(山水天雪桥)


与其他数据库相比,MySQL易学易用。

精灵巫婆 发表于 2015-1-19 20:50:46

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

海妖 发表于 2015-1-25 05:36:22

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

不帅 发表于 2015-2-2 14:47:51

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

若相依 发表于 2015-2-7 23:05:23

总感觉自己还是不会SQL

若天明 发表于 2015-2-23 14:46:09

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

小魔女 发表于 2015-3-7 09:20:46

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

山那边是海 发表于 2015-3-14 18:10:17

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: MYSQL编程:ORACLE猎取DDL的几种经常使用的办法