比如:dmp文件导出的表属于TEST这个表空间。分为三种情况
1.未创建表空间
- 创建表空间
create tablespace TEST
logging
datafile 'D:\app\用户名\oradata\test.dbf' –-数据库安装路径
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
- 导入dmp文件
imp scott/tiger@orcl file="d:\test.dmp" full=y
2.已创建表空间,表空间存在旧数据,保留旧数据,并新增新数据
imp scott/tiger@orcl file="d:\test.dmp" full=y ignore=y
oracle imp 导入可以使用 ignore=y 参数进行覆盖数据库,
如果不使用 ignore=y 参数在进行imp 导入时, 对已经存在的表不会进行导入,
如果加上ignore=y 参数就会对已经存在的表中没有的记录进行更新,但对已经存在记录不会进行覆盖修改。
3.已创建表空间,表空间存在旧数据,清除旧数据,导入新数据。
注:在测试环境使用,对Oracle了解不深,所以使用先删除表空间,再创建表空间的方法导入数据,不清楚会不会造成其他不可修复的影响。
首先看下Oracle的逻辑结构,表是依托表空间的,所以删除表空间,表空间里面的表数据都被删除。再导入dmp文件就可以了。
具体做法:
- 删除表空间
--删除非空表空间,包含物理文件
drop tablespace TEST including contents and datafiles;
- 创建表空间
create tablespace TEST
logging
datafile 'D:\app\用户名\oradata\test.dbf' –-数据库安装路径
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
- 导入dmp文件
imp scott/tiger@orcl file="d:\test.dmp" full=y
参考资料:https://blog.csdn.net/allway2/article/details/99209652
https://blog.csdn.net/liberty12345678/article/details/82347508