我想创建一个可以重新创建我已经拥有的数据库的sql脚本。我想在没有数据的情况下重新创建数据库。
那么无论如何使用sqlplus导出用户的数据库?
答案 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
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所述。