云之飞踢 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