Oracle的EXP与IMP常用整理

云之飞踢 2013-12-06

关于Oracle数据的导出与导入,是在工作中经常用到,尤其是数据库备份。

 exp与imp的用法收集网络,还是那句话,“出来混的,总是要还的” 。

一.定义

  oracle 的exp/imp命令用于实现对数据库的导出/导入操作;
  exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件;
  imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。

二.语法格式

格式:

导出

> exp userid/password@instance file='path' log='log.log' 参数

导入

> imp userid/password@instance file='path' log='log.log' 参数

CMd命令行输入 imp help=y 或 exp help=y 获取imp或exp的语法参数信息:

  USERID  用户名/口令         
  FULL    导入整个文件 (N)
  BUFFER  数据缓冲区大小       
  FROMUSER    所有人用户名列表
  FILE    输入文件 (EXPDAT.DMP)   
  TOUSER      用户名列表
  SHOW    只列出文件内容 (N)
  TABLES      表名列表
  IGNORE  忽略创建错误 (N)   
  RECORDLENGTH  IO 记录的长度
  GRANTS  导入权限 (Y)         
  INCTYPE      增量导入类型
  INDEXES  导入索引 (Y)         
  COMMIT      提交数组插入 (N)
  ROWS    导入数据行 (Y)       
  PARFILE      参数文件名
  LOG      屏幕输出的日志文件 
  CONSTRAINTS  导入限制 (Y)
  DESTROY                覆盖表空间数据文件 (N)
  INDEXFILE              将表/索引信息写入指定的文件
  SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
  FEEDBACK              每 x 行显示进度 (0)
  TOID_NOVALIDATE        跳过指定类型 ID 的验证
  FILESIZE              每个转储文件的最大大小
  STATISTICS            始终导入预计算的统计信息
  RESUMABLE              遇到与空格有关的错误时挂起 (N)
  RESUMABLE_NAME        用来标识可恢复语句的文本字符串
  RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
  COMPILE                编译过程, 程序包和函数 (Y)

1) 数据导出:

 1 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:/SampleDB.dmp中

  exp system/manager@TestDB file=E:/sampleDB.dmp log=E:/sample.log full=y

 2 将数据库中system用户与sys用户的表导出

  exp system/manager@TestDB file=E:/sampleDB.dmp  log=E:/sample.log owner=(system,sys)

 3 将数据库中的表 TableA,TableB 导出

    exp system/manager@TestDB  file=E:/sampleDB.dmp  log=E:/sample.log tables=(TableA,TableB)

 4 将数据库中的表tableA中的字段filed1 值为 "王五" 的数据导出

  exp system/manager@TestDB  file=E:/sampleDB.dmp log=E:/sample.log tables=(tableA)  query=' where filed1='王五'
 
  如果想对dmp文件进行压缩,可以在上面命令后面 加上 compress=y 来实现。

  如果想只导出数据库对象的结构,参数加rows=no 获得,全部对象 full=y,忽略各种错误 ignore=y

2) 数据的导入

 1 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入;

  imp system/manager@TEST  file=E:/sampleDB.dmp log=E:/sample.log full=y  ignore=y
 

 2 将d:/daochu.dmp中的表table1 导入

 imp system/manager@TEST  file=E:/sampleDB.dmp log=E:/sample.log  tables=(table1)

 3. 导入一个完整数据库

 imp system/manager file=bible_db log=dible_db full=y ignore=y

 4. 导入一个或一组指定用户所属的全部表、索引和其他对象

 imp system/manager file=E:/sampleDB.dmp log=E:/sample.log fromuser=seapark
 imp system/manager file=E:/sampleDB.dmp log=E:/sample.log fromuser=(seapark,amy,amyc,harold)

 5. 将一个用户所属的数据导入另一个用户

 imp system/manager file=E:/sampleDB.dmp log=E:/sample.log fromuser=seapark touser=seapark_copy
 imp system/manager file=E:/sampleDB.dmp log=E:/sample.log fromuser=(seapark,amy)
 touser=(seapark1, amy1)

 6. 导入一个表

 imp system/manager file=E:/sampleDB.dmp log=E:/sample.log fromuser=seapark TABLES=(a,b)

 7. 从多个文件导入

 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
 log=paycheck, filesize=1G full=y

 8. 使用参数文件

 imp system/manager parfile=bible_tables.par
 bible_tables.par参数文件:
 #Import the sample tables used for the Oracle8i Database Administrator's
 Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

9. 增量导入

 imp system./manager inctype= RECTORE FULL=Y  FILE=A

相关推荐