# EXP/IMP用法 ## 简介: > exp/imp 最早的数据逻辑导入导出方法,可直接跨平台系统导入导出数据,速度较慢,操作简单,适用于较小的库,如开发阶段的测试库 > 注:11g开始"延迟段创建" 特性 默认对于空表(新建的表,从来没有insert过任何数据),exp导出的时候会忽略 > 由参数deferred_segment_creation 控制 ## EXP: ### ①全库备份 ```bash 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 ``` ### ②用户备份 ```bash exp system/123456@prod owner=tom file=tom.dmp buffer=80960000 exp \'/ as sysdba\' owner=tom file=tom.dmp buffer=80960000 ``` ### ③表备份 ```bash exp tom/tom@prod tables=mail,class file=mc.dmp buffer=80960000 ``` ### ④表级别带where条件的数据导出 ```bash 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条件的表 > 大于号 映射含义:包含的意思 ### ①全库导入 ```bash imp system/123456@prod full=y file=database.bmp log=data.log buffer=80960000 ignore=y # 注意不要造成数据重复 system用户下的表不会被数据重复,只需注意手动建成的用户的数据 ``` ### ②利用全库备份导入一个用户 ```bash 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用户下 ``` ### ③利用用户备份—-导入用户数据 ```bash 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条件导出的数据导入 ```bash imp jerry/jerry@prod tables=mail file=m500.dmp buffer=80960000 ignore=y; # 直接导入where筛选出来的行数 ``` ## 补充: ### 1.提高导入导出速度 ```bash # exp/imp导入导出加速—可加选项 direct=y #(直接路径导出) # 或者设置buffer size的大小 buffer=2000000 # (数据缓冲) ``` ### 2.数据库对象有主外键约束 这发生在将几个包含表的DMP文件分别导入数据库时,不符合主外键约束, 数据便会导入失败;解决办法: 先导入主表, 再导入依存表;disable目标导入对象的主外键约束, 导入数据后, 再enable它们 ## 快照 - https://pic.rmb.bdstatic.com/bjh/241010/e88a704e743fa67f86abc5a6b518467e6819.png - https://i3.wp.com/pic.rmb.bdstatic.com/bjh/241010/e88a704e743fa67f86abc5a6b518467e6819.png