最近在做一些数据库相关工作,需要频繁用到一些数据导入/出的操作,在这简单总结一下:
导入/出数据时,存在两种方式:1. imp/exp 2.impdp/expdp
两种推荐使用第二种,即impdp/expdp方式,原因在于其导入/出效率较于第一种高太多。
需要注意的是,在导入/出的时候,两种方式操作的文件格式是不同的。
因此切记不要用impdp命令来导入exp命令导出的dmp文件。
下面以impdp/expdp为例介绍导入/出操作流程
导出(expdp):
1.进入sqlplus,并以dba权限登陆。
sqlplus /nolog;
conn / as sysdba;
2.创建导出目录
create or replace directory dpdata as '/home/oracle/dmp';
3.给导出目录赋权限
grant read,write on directory dpdata to test;
--语法格式:grant 权限内容(多个以逗号隔开) on directory 目录名称(即步骤2中创建的目录名) to 用户名
4.导出
1)按用户导
expdp test/test@orcl schemas=test dumpfile=expdp.dmp DIRECTORY=dpdata;
--格式:expdp 用户名/密码@数据库实例名称 schemas=名称(一般为用户名) dumpfile=导出文件名 DIRECTORY=导出目录;
2)按表名导
expdp test/test@orcl TABLES=aaa,bbb dumpfile=expdp.dmp DIRECTORY=dpdata;
--格式:expdp 用户名/密码@数据库实例名称 TABLES=表名称(多个以逗号分隔) dumpfile=导出文件名 DIRECTORY=导出目录;
3)导整个数据库
expdp test/test@orcl DIRECTORY=dpdata DUMPFILE=expdp.dmp FULL=y;
--格式:expdp 用户名/密码@数据库实例名称 DIRECTORY=导出目录 dumpfile=导出文件名 FULL=y/n(是否导出整个数据库);
4)按查询条件导
expdp test/test@orcl DIRECTORY=dpdata DUMPFILE=expdp.dmp Tables=emp query='WHERE deptno=20';
--格式:expdp 用户名/密码@数据库实例名称 DIRECTORY=导出目录 dumpfile=导出文件名 Tables=表名称 query=条件语句;