Oracle 导出表结构

1. 使用orace exp命令

exp user/passwd file=a.dmp rows=N

说明:使用exp导出的是一个只有表结构没有表记录的dmp文件,导出文件仅仅适用于oracle数据库。

2. 使用oracle imp命令

imp userid=scott/tiger file=a.dmp full=y indexfile=scott.sql

说明:此时imp并没有真正导入数据库,而是将DDL写在scott.sql里;把前面的REM去了,再去掉最后一行... 0 rows,创建表的DDL就做好了,这样得到的DDL经过简单修改就可以使用在其他数据库的建表语句中。

3. 使用DBMS_METADATA.GET_DDL包

sqlplus scott/tiger<<-EOF
	set pagesize 0
	set long 90000
	set feedback off
	set echo off
	spool get_allddl.sql
	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
	quit
EOF

说明:导出的get_allddl.sql文件就是数据库实例中所有用户的建表语句,如果想导出单表可以在user_tables后面增加条件限制。

4.使用dbvisualizer或者pl/sql导出

在实际导出中,第一种和第二种方法都可以正常导出sql,第三种在执行过程中出现了错误:

ERROR:
ORA-39212: installation error: XSL stylesheets not loaded correctly
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_METADATA_INT", line 7398
ORA-06512: at "SYS.DBMS_METADATA_INT", line 7447
ORA-06512: at "SYS.DBMS_METADATA_INT", line 9453
ORA-06512: at "SYS.DBMS_METADATA", line 1919
ORA-06512: at "SYS.DBMS_METADATA", line 2792
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1

/home/dhc)>oerr ora 39212

39212, 00000, "installation error: XSL stylesheets not loaded correctly"
// *Cause:  The XSL stylesheets used by the Data Pump Metadata API
//          were not loaded correctly into the Oracle dictionary table
//          "sys.metastylesheet." Either the stylesheets were not loaded
//          at all, or they were not converted to the database character
//          set.
// *Action: Connect AS SYSDBA and execute dbms_metadata_util.load_stylesheets
//          to reload the stylesheets.

/home/dhc)>oerr ora 06512

06512, 00000, "at %sline %s"
// *Cause:   Backtrace message as the stack is unwound by unhandled
//           exceptions.
// *Action:  Fix the problem causing the exception or write an exception
//           handler for this condition. Or you may need to contact your
//           application administrator or DBA.

解决方法
以sysdba权限的用户登陆执行以下语句:

SQL> exec dbms_metadata_util.load_stylesheets;

PL/SQL procedure successfully completed.

重新使用DBMS_METADATA.GET_DDL包导出建表语句,成功完成。

你可能感兴趣的:(数据库)