Oracle的EXP、IMP命令导入导出数据

EXP:
①全库备份
exp system/123456@prod full=y file=~/backup/database.dmp log=~/backup/database.log buffer=80960000 —不包括sys用户 即数据字典没有导出
如想导出sys和system用户对象和数据字典,则:
exp \’/ as sysdba\’ owner=sys file=sys.dmp buffer=80960000 —在服务器本地导出sys

②用户备份
exp system/123456@prod owner=tom file=tom.dmp buffer=80960000
exp \’/ as sysdba\’ owner=tom file=tom.dmp buffer=80960000

③表备份
exp tom/tom@prod tables=mail,class file=mc.dmp buffer=80960000

④表级别带where条件的数据导出
exp tom/tom@prod tables=mail query=\”where id>\500\” file=mail500.dmp buffer=80960000 ——linux平台
exp tom/tom@prod tables=mail query=’where id”>”500’ file=mail500.dmp buffer=80960000 —–windows平台

IMP:
向下兼容—–全库数据>用户>表>where条件的表 > 大于号 映射含义:包含的意思

①全库导入
imp system/123456@prod full=y file=database.bmp log=data.log buffer=80960000 ignore=y 注意不要造成数据重复 system用户下的表不会被数据重复,只需注意手动建成的用户的数据

②利用全库备份导入一个用户
imp system/123456@prod fromuser=tom touser=tom file=database.dmp log=data.log buffer=80960000 ignore=y
提前建好tom用户和分配权限
imp system/123456@prod fromuser=tom touser=jerry file=database.dmp log=data.log buffer=80960000 ignore=y
利用全库备份导入某一个表
imp system/123456@prod fromuser=tom touser=jerry tables=mail file=database.dmp log=database.log buffer=80960000 ignore=y
— 全备导入tom用户下的mail表到jerry用户下

③利用用户备份—-导入用户数据
imp jerry/jerry@prod file=jerry.dmp buffer=80960000 ignore=y;
前提用户存在,权限够—导入整个用户

imp jerry/jerry@prod tables=mail,c file=jerry.dmp buffer=80960000 ignore=y;
—导入特定的表

④利用where条件导出的数据导入
imp jerry/jerry@prod tables=mail file=m500.dmp buffer=80960000 ignore=y;
—-直接导入where筛选出来的行数

补充:
1.提高导入导出速度
exp/imp导入导出加速—可加选项 direct=y (直接路径导出) 或者设置buffer size的大小 buffer=2000000 (数据缓冲)

2.数据库对象有主外键约束
这发生在将几个包含表的DMP文件分别导入数据库时,不符合主外键约束, 数据便会导入失败;解决办法: 先导入主表, 再导入依存表;disable目标导入对象的主外键约束, 导入数据后, 再enable它们
————————————————
版权声明:本文为CSDN博主「Breath_wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014257861/article/details/80227606

posted on 2022-10-05 16:12  洞幺人生  阅读(1016)  评论(0编辑  收藏  举报