1、exp/imp相当于oracle数据库的还原与备份
2、exp把数据导出到本地dmp文件,imp把本地文件导入数据库
3、exp/imp可以在cmd.exe中执行

一、数据的导出:
 1 将数据库EDWTEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
  > exp edwdata/edwdata@EDWTEST  file=c:\fot\daochu.dmp log=c:\fot\daochu.log full=y
 

2 将数据库EDWTEST中system用户与sys用户的表导出
  > exp edwdata/edwdata@EDWTEST file=c:\fot\daochu.dmp log=c:\fot\daochu.log owner=(system,sys)
  
 3 将数据库EDWTEST中的表s_data_d、stu导出
  > exp edwdata/edwdata@EDWTEST file= c:\fot\new.dmp log=c:\fot\new.log tables=(s_data_d,stu)

4 将数据库EDWDATA中的表s_data_d中的字段statdate等于'20110430'的数据导出,query的\"------------------\"中包含单个或多个条件均可
  > exp edwdata/edwdata@EDWTEST file=c:\fot\s_data_d.dmp log=c:\fot\s_data_d.log tables=(s_data_d) query=\" where statdate='20110430'\" 
  

 

二、数据的导入:
   1 将c:\fot\new.dmp全部导入数据库EDWTEST1(EDWTEST1中原本不存在表s_data_d,stu),'tables=(s_data_d,stu)'与'full=y'等价,因为这个文件只包含表s_data_d,表stu的数据。
   > imp edwdata/edwdata@EDWTEST1 file= c:\fot\new.dmp log=c:\fot\new.log tables=(s_data_d,stu)
   > imp
edwdata/edwdata@EDWTEST1 file= c:\fot\new.dmp log=c:\fot\new.log  full=y
  

  2  由imp导入数据时,首先需要create table,如果table已经存在,不管表里是否有数据,都会报错。
      将c:\fot\new.dmp导入数据库EDWTEST(EDWTEST已存在表s_data_d,stu),结果如下:
   > imp edwdata/edwdata@EDWTEST file=c:\fot\new.dmp log=c:\fot\new.log tables=(s_data_d,stu)

3  如果表已存在,可以使用关键字ignore=y来直接导入数据
     情况一:表存在,但是表为空表,没有数据,则跳过建表,数据被全部导入
   > imp edwdata/edwdata@EDWTEST file= c:\fot\new.dmp log=c:\fot\new.log tables=(s_data_d,stu) ignore=y
 

    情况二:表存在,表中已有数据,但是表没有约束条件,则不管是否重复,全部导入
      >imp edwdata/edwdata@EDWTEST file= c:\fot\s_data_d_1.dmp ignore=y 
    情况三:表存在,表中已经有数据,但是表存在主键约束或其他约束,则跳过建表,开始逐条对比数据,若数据库表中没有该条数据则导入,若已存在则跳过。
      >imp edwdata/edwdata@EDWTEST file= c:\fot\s_data_d_1.dmp ignore=y