背景说明
因工作需要,需要应用数据泵导入和导出数据,在此记录
一、expdp数据库导出
1、建立逻辑目录
建立逻辑目录之前,我们需要在数据库服务器中建立 物理目录 ,记住该目录位置,以数据库管理员登录数据库并建立逻辑目录:
create directory mydata as '逻辑目录路径';
--其中,mydata为新建的逻辑目录名称,'逻辑目录路径'为物理目录路径
我们可以通过语句查询新建的目录是否存在
select * from dba_directories;
2、授权
--给用户逻辑目录读写权限
grant read,write on directory mydata to username;
3、expdp 数据泵导出
--导出
expdp 用户名/用户名密码 dumpfile=导出文件名 directory=逻辑目录名 tables=表名 logfile=expdp.log;
注意:
01、该语句并非sql语句,需要使用SSH工具连接数据库后执行
02、如果我们登录A用户,想要导出B用户的表,需要授予A用户权限:
grant exp_full_database to userA; --导出
grant imp_full_database to userA; --导入
03、若仅需导出某个分区下的数据,可以在到处语句的表名后添加冒号和分区名
expdp 用户名/用户名密码 dumpfile=导出文件名 directory=逻辑目录名 tables=表名:partition_name logfile=expdp.log;
查询用户表及分区的语句:select * from all_tab_partitions;
导出结束后,我们可以在逻辑目录中找到导出的dmp文件;
二、impdp数据泵导入
1、建立逻辑目录和授权
与expdp一致,我们在导入时也需要建立逻辑目录并对用户授权,可参考导出的语句;
2、impdp
--导入表
impdp 用户名/用户名密码 directory=逻辑目录 dumpfile=导入文件名 remap_schema=旧用户名:新用户名 remap_tablespace=旧表空间:新表空间;
如果导入时报错,可以添加 table_exists_action=truncate
,将已导入数据删除后再次导入。