如何使用Oracle 11g中的exp命令导出包括空表的数据
随着技术的发展,Oracle 11g引入了新特性。 当表中没有数据时,默认情况下不分配段来节省空间。 然而,在使用exp命令导出表数据时,无法导出空表。 下面介绍如何使用exp命令导出包括空表的数据。
1.设置系统参数deferred_segment_creation
首先,在任务栏上搜索图标,输入cmd以打开命令提示符窗口。 接下来,设置系统参数deferred_segment_creation。
输入以下SQL语句查询参数值:
```sql
show parameter deferred_segment_creation;
```
输出的结果应为默认值TRUE。 修改该参数值,输入以下SQL语句:
```sql
alter system set deferred_segment_creationfalse;
```
执行结果如下图所示:
![image1]()
2.登录Oracle数据库
然后,打开PL/SQL Developer数据库连接工具,点击【Session】选项卡,然后点击“Log on”按钮并输入用户名和密码即可完成登录,如下图所示:
![image2]()
3.查询空表
接下来,我们需要查询空表。 点击【File】选项卡,然后点击“SQL Window”子菜单。 输入以下SQL查询语句:
```sql
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows0;
```
按F8键或点击工具栏上的“绿色三角按钮”执行查询。 执行结果显示APT_MAIN_FEES是空表,如下图所示:
![image3]()
4.编写Bat脚本并导出数据
最后,我们需要编写一个Bat脚本,将其与exp命令一起使用来导出数据。 双击Bat脚本以执行并导出表数据。 从命令提示符窗体中,可以看到即使空表APT_MAIN_FEES也在导出范围之内,如下图所示:
![image4]()
结论
通过以上步骤,我们可以成功地使用exp命令导出包括空表的数据。 首先,我们需要设置deferred_segment_creation参数。 其次,我们需要查询空表并编写一个Bat脚本来导出数据。这些步骤确保了所有数据都能够被正确导出。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。