oracle 通过expdp/impdp和exp/imp导入导出
一、expdp/impdp和exp/imp的区别
1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
二、exp/imp导入导出方法
exp导入
1.导出整个数据库通用命令:
exp 数据库用户名/数据库密码@数据库别名 file=E:\目录\文件名.dmp
例如:exp user/passwd@orcl file=d:\export.dmp
2.导出部分表通用命令
exp 数据库用户名/数据库密码@数据库别名 GRANTS=Y TABES=(要导出的表1, 要导出的表2,...) file=E:\目录\文件名.dmp
例如:exp user/passwd@orcl grants=y tables=(table1,table2) file=d:\table.dmp
imp导入
imp 导入库用户名/导入库密码@导入库别名 file=E:\目录\文件名.dmp fromuser=dmp文件的导出库 touser=dmp文件的导入库导入库
例如:imp user/passwd@orcl file=d:\table.dmp fromuser=导出用户名 touser=导入用户名
imp system/123456@orclbak file=d:\iom.dmp fromuser=ogg touser=test
三、expdp/impdp的导入导出
3.1 expdp导出步骤
创建逻辑目录:
在服务器上创建真实的目录
-- 用sys管理员登录sqlplus;
create directory dump_dir as 'd:\test\data'; --创建逻辑目录 不会在OS上创建真正的目录,所以要先在服务器上创建真实的目录
select * from dba_directories; --查看管理员目录,检查是否存在
grant read,write on directory dump_dir to user; --用sys管理员给你的指定用户赋予在该目录的操作权限。
3.2 用expdp导出dmp,有五种导出方式
--全量导出数据库(full=y)
expdp user/passwd@orcl dumpfile=expdp.dmp directory=dump_dir full=y logfile=expdp.log;
--按用户导出(schemas=user)
expdp user/passwd@orcl schemas=user dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
--按表空间导出(tablespace=tbs1)
expdp sys/passwd@orcl tablespace=tbs1 dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
--导出表(tables=table1,table2)
expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
--按查询条件导出(tables=table1='where 条件')
expdp user/passwd@orcl tables=table1='where 条件' dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
3.3 impdp导入步骤
如果不是同一台服务器,需要先将上面的dmp文件下载到目标服务器上,参照"expdp导出步骤",建立逻辑目录;
导入实例:
impdp tms/tms123@orcl remap_schema=zbtms:tms remap_tablespace=zbtms:tms directory=dump_dir dumpfile=ZBTMS2021031701.DMP
/*
说明:
remap_schema 当导出导入用户不一致时,zbtms为导出用户,tms 为导入用户
remap_tablespace 当导出导入表空间不一致时,zbtms为导出表空间,tms 为导入表空间
directory=dump_dir 指定逻辑目录
dumpfile=ZBTMS2021031701.DMP 需要导入的文件,不能携带路径,需放在指定逻辑目录下
*/
用impdp命令导入,对应导出的五种方式
--全量导入数据库(full=y)
impdp user/passwd@orcl directory=dump_dir dumpfile=expdp.dmp full=y;
--按用户导入
impdp user/passwd@orcl schemas=user directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log; --用户同名 导入导出用户名相同
--remap_schema参数相当于imp工具中的fromuser和touser参数,可以实现将一个用户的数据导入到另一个用户中
impdp user/passwd@orcl remap_schema=user1:user2 directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log; --用户不同 user1导出用户名 user2导入用户名
--导入表空间;
impdp sys/passwd@orcl tablespaces=tbs1 directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log; --表空间名称相同
impdp sys/passwd@orcl remap_tablespace=tbs1:tbs2 directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log; --表空间名称不同 tbs1导出表空间名 tbs2导入表空间名
--导入表
--从A用户中把表table1和table2导入到B用户中;
impdp user/passwd@orcl tables=A.table1,A.table2 remap_schema=A:B directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log;
--将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户A的数据导入到B,并生成新的oid防止冲突;
impdp user/passwd@orcl remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=A:B FULL=Y transform=oid:n directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log
--追加数据
--table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE
impdp user/passwd@orcl directory=dump_dir dumpfile=expdp.dmp schemas=user table_exists_action=replace logfile=impdp.log;