数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
ORACLE获取DDL的几种常用的方法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

ORACLE获取DDL的几种常用的方法

 

作者:刘颖博

时间:2004-2-26

mail[email protected],请指正

 

转载请注明出处及作者

 

大体的分为三种方法:

一;可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的操作。

 

1.首先是toad工具,可以到www.quest.com网站上下载

操作步骤的简要介绍如下:

a.    启动toad,连接目标数据库

b.    点击DBA->Generate Schema Script,如图1所示:

1

c.出现图2的操作界面:

2

通过操作界面(如图2)已经很清楚的,选择相应的Schema,当然可以通过其他的几个tab页面选择相应的条件,点击Execute按钮,ok。详细的操作就不说了!

d.当导出操作结束后,会出现如图3的界面

3

我们可以将导出的DDL脚本另存(Save to File)或者copy到剪贴板上(Clipboard)。

2.下面说一下另外的一个工具plsql develop是如何进行到出DDL语句的

操作步骤如下:

a.    启动plsql develop,连接目标数据库

b.    点击Tools->Export Tables,如图4

4

c.    然后出现下面界面,如图5

5

d.    在如图5的界面上,选择相应的内容,然后点击Export按钮,ok,会出现界面如图6,其实这些工具也是调用Oracle的Exp工具而已

6

如果你没有指定文件目录,文件会出现在plsql develop软件的安装目录下。

好,下面介绍第二种方法

二;直接通过EXP/IMP工具

Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导出DDL。

a.    通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM

语法大体如下:

exp userid=... tables=emp  rows=n file=emp.dmp
imp userid=... file=emp.dmp indexfile=emp.sql

b.    通过imp指定show=y,同时指定log参数,格式上也不是很爽,在格式上很美观的还是通过工具导出的比较美观

语法大体如下:

exp userid=... tables=emp rows=n file= emp.dmp
imp userid=... file= emp.dmp show=y log=emp.sql

c.    利用unix下有strings命令,语法大体如下,这种方法比较野蛮:

exp userid=... tables=tab1 rows=n file=tab1.dmp
strings emp.dmp >emp.sql
emp.sql
中就有DLL语句了

第三种方法,是利用oracle9i的新特性,就是DBMS_METADATA包,来得到DLL语句,这个也是本文要介绍的重点

三;通过9iDBMS_METADATA包得到DLL语句

基本上用到的语法如下:

a. 获取单个的建表和建索引的语法
set heading off;
set echo off;
Set pages 999;
set long 90000;
 
spool DEPT.sql
select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;
select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;
spool off;
 

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

set pagesize 0
set long 90000

set feedback off

set echo off 
spool scott_schema.sql
connect scott/tiger;
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;
 

c.    获取某个SCHEMA的建全部存储过程的语法

connect brucelau /brucelau;

spool procedures.sql


select
   DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
from
   user_objects u

where
   object_type = 'PROCEDURE';

spool off;

 

另:

dbms_metadata.get_ddl('TABLE','TAB1','USER1')
三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象所在的用户名。

 

参考:

ZDNet China轻松取得Oracle结构描述句法

Oracle的官方文档

 

 

感谢shangym 桥)

 




相关文章

相关软件