电脑基础 · 2023年3月13日

expdp/impdp oracle数据泵导入导出

一、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=旧表空间:新表空间;

 或者(先创建表空间并且给用户绑定)

impdp 用户名/用户名密码 directory=逻辑目录 dumpfile=导入文件名 

如果导入时报错,可以添加 table_exists_action=truncate ,将已导入数据删除后再次导入。