2010-07-07 65 views
5

我想创建一个可以重新创建已有数据库的SQL脚本。我想重新创建没有数据的数据库。Oracle导出数据库结构的SQL

那么反正用sqlplus输出用户的一个DB?

+0

你只想要一个DDL导出?即没有数据的数据库模式呢? – 2010-07-07 09:12:51

回答

7

有两种基本方法。

第一个是导出转储文件。这可以使用数据泵实用程序:

$ 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

10

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; 
2

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