在 PL/SQL Developer 里导出建表语句、视图这些对象,最简单直接的办法就是用"导出用户对象"功能,它会把选中的表、视图、序列、存储过程等一次性生成一个.sql 脚本文件。
🗂️ 工具导出
-
打开工具:登录 PL/SQL Developer,连接到目标数据库。
-
选择功能:点击菜单栏 工具 → 导出用户对象。
-
勾选对象:在弹出的窗口里,勾选需要导出的表、视图、序列等。如果不勾选,默认导出当前用户下的所有对象。
-
设置选项:建议勾选"包括所有者",这样导出的脚本里会带上用户名,导入到其他库时能自动对应;不勾选则脚本不带所有者,适合导入到不同用户下。
-
导出文件:选择输出路径和文件名(.sql 格式),点击"导出"即可。
> 这个方法导出的是对象结构(建表、建视图语句),不含表里的数据。如果要连数据一起导出,需要用下面的"导出表"功能。
📄 导出表结构+数据
如果想连表里的数据一起导出,用另一个功能:
-
点击 工具 → 导出表。
-
选择要导出的表。
-
在"SQL Inserts"选项卡里,勾选"创建表"选项(这样会生成建表语句),再按需选择是否导出数据。
-
指定输出文件路径,点击导出。
如果只需要表结构不想要数据,可以在"Where 子句"里写 `WHERE ROWNUM<1`,这样只生成建表语句。
⚙️ 用脚本导出 DDL(更灵活)
除了图形界面,也可以用 Oracle 自带的 `DBMS_METADATA` 包来生成精确的建表、建视图语句,适合批量处理或自动化:
```sql
SET LONG 100000;
SET PAGESIZE 0;
SET FEEDBACK OFF;
SET ECHO OFF;
-- 导出所有表的建表语句
SELECT DBMS_METADATA.GET_DDL('TABLE', table_name) FROM USER_TABLES;
-- 导出所有视图的创建语句
SELECT DBMS_METADATA.GET_DDL('VIEW', view_name) FROM USER_VIEWS;
```
执行前记得先设置 `SET LONG 100000`,否则长的 DDL 会被截断。
> 用 `DBMS_METADATA` 导出的 DDL 默认会带上 `STORAGE`、`TABLESPACE` 等物理属性,如果不需要,可以执行 `EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE', FALSE);` 关闭。
🔄 导入到其他库
导出的.sql 文件,可以在 PL/SQL Developer 里打开 文件 → 新建 → 命令窗口,粘贴进去执行;或者用 SQL*Plus 直接 `@文件名.sql` 跑一遍就行。