Oracle导出数据库结构的SQL

时间:2010-07-07 08:57:54

标签: sql oracle

我想创建一个可以重新创建我已经拥有的数据库的sql脚本。我想在没有数据的情况下重新创建数据库。

那么无论如何使用sqlplus导出用户的数据库?

3 个答案:

答案 0 :(得分:11)

this blog post开始,看起来有一个名为dbms_metadata的包可以生成create table SQL。例如:

 set pagesize 0
 set long 90000
 set feedback off

 set echo off 
 spool filename.sql 
 connect username/password;
 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;

答案 1 :(得分:7)

有两种基本方法。

第一种是导出转储文件。这可以使用Datapump实用程序:

$ expdp apc/pw directory=data_dump_dir dumpfile=apc_20100707.dmp content=METADATA_ONLY  

Find out more

Datapump是在Oracle10g中引入的。在早期版本的数据库中,我们可以使用EXP实用程序来执行相同的操作。

$ exp apc/pw dumpfile=apc_20100707.dmp rows=N

要导入文件,我们使用匹配的impdp(或imp)实用程序。

这是操作系统方法。要生成实际的SQL脚本,我们可以使用Oracle 9i中引入的内置DBMS_METADATA包。这是一项更多的工作,但可以更精细地控制导出对象的细节。 Find out more

答案 2 :(得分:2)

您还可以使用SQL Developer创建sql脚本,如here所述。