expdp / impdp 用法详解[通俗易懂]

expdp / impdp 用法详解[通俗易懂]一、注意事项:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。二、使用expdp导出文件前的设置:1、创建逻辑目录,该命令不会在操作系统…

大家好,又见面了,我是你们的朋友全栈君。

一、注意事项:

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

二、使用expdp导出文件前的设置:

1、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建(我登录的是root用户),选取linux上一个实际目录,或者新建一个目录,这里我选的是’/usr/local/tomcat’这个已经有的目录,并将tomcat文件夹权限设为最高777,最简单的方式就是右键文件夹,修改属性…..:

expdp / impdp 用法详解[通俗易懂]

expdp / impdp 用法详解[通俗易懂]

进入oracle模式:su – oracle     
[oracle@iz2zehftd4ce4m2zqo3c6iz ~]$ sqlplus / as sysdba

SQL>create directory dmp_dir as ‘/usr/local/tomcat’;

2、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
SQL>select * from dba_directories;

expdp / impdp 用法详解[通俗易懂]

3、给用户赋予在指定目录的操作权限,最好以system等管理员赋予(我这里登录的是root用户,所以设置为public)。
SQL>grant read,write on directory dmp_dir to public;

SQL> show user;

SQL> host

备注:删除目录语句:SQL> DROP DIRECTORY dmp_dir;

三、导出数据

退出sql模式到oracle

1、按用户导出数据

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp 用户名/密码@服务器IP地址/orcl schemas=用户名 DIRECTORY=dmp_dir DUMPFILE=20190603.dmp logfile=20190603dmp.log;

2、按表名导
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl TABLES=sys_log,dept dumpfile=sys_log.dmp DIRECTORY=dmp_dir;

按指定一类的表名进行导出,比如导出表名前缀为test_的所有表:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl TABLES=test_% dumpfile=sys_log.dmp DIRECTORY=dmp_dir;

3、按查询条件导
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ expdp test_demo/test_demo@orcl directory=dmp_dir dumpfile=sys_log1.dmp Tables=sys_log query=\”WHERE id=\’5280e\’\”;

五、导入数据
1、导到指定用户下

如果想导入的用户已经存在,并且导入用户名和导出的用户名不一致:
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp user2/pass2 directory=dmp_dir dumpfile=TestDemo.dmp REMAP_SCHEMA=user1:user2  remap_tablespace=user1space:user2space  EXCLUDE=USER

如果想导入的用户不存在:
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$impdp system/passsystem directory=dmp_dir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2

user2会自动建立,其权限和使用的表空间与user1相同,但此时用user2无法登录,必须修改user2的密码

如果想导入的用户已经存在,并且导入用户名和导出的用户名一致:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp test_demo/test_demo DIRECTORY=dmp_dir DUMPFILE=expdp.dmp SCHEMAS=test_demo;

impdp username/password table_exists_action=truncate  directory=DATA_PUMP_DIR dumpfile=expdpfilename.dmp logfile=implog.log

如果需要覆盖或追加数据,则需要添加table_exists_action命令:

例如,导入到指定用户下,并覆盖原有表数据:

[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp user2/pass2 table_exists_action=replace directory=dmp_dir dumpfile=TestDemo.dmp REMAP_SCHEMA=user1:user2 EXCLUDE=USER
table_exists_action含义:

skip 是如果已存在表,则跳过并处理下一个对象;

append是为表增加数据;

truncate是截断表,然后为其增加新数据;

replace是删除已存在表,重新建表并追加数据;

2、改变表的owner
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3、导入表空间
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4、导入数据库
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5、追加数据
[oracle@iZm5e5f4jmz3fgd9f0qhikZ ~]$ impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

表导入完成后,登录plsql等工具,检查下function、view这些是否有报错,有报错的查找下代码原因,也可能是因为导入的原因需要重新编辑并运行下即可:

expdp / impdp 用法详解[通俗易懂]

备注:密码有特殊字符的加上引号:’username/”psdf$@FS”‘

如果要导入的数据库没有表空间,则在impdp语句后加上参数:TRANSFORM=segment_attributes:n

例如: impdp test_demo/test_demo DIRECTORY=dmp_dir DUMPFILE=expdp.dmp SCHEMAS=test_demo TRANSFORM=segment_attributes:n

expdp / impdp 用法详解[通俗易懂]

有上述错误时,检查目录文件是否是777权限

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125515.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • (十一)DSP28335基础教程——EQEP实验(直流电机转速检测)

    (十一)DSP28335基础教程——EQEP实验(直流电机转速检测)0前言这一节我们来学习DSP的EQEP模块的功能。实验目标:通过光电编码器,将采集直流减速电机的转速并显示在LCD1602上。由于28335控制LCD1602的例程并不多,在下面解释的过程会详细贴出代码,并给出一些注意事项。本节将分为硬件部分、软件部分和实验展示三个方面进行介绍,不清楚的欢迎留言。1硬件部分我们需要五个硬件:可调电源、DSP28335核心板、烧写器、自带光电编码器的直流减速电机和LCD1602。其中,电机的额定电压为12V,因此,我们通过可调电源来调整电压,则可以调整电机的转速

    2022年10月7日
  • pinetwork节点教程_搭建ss教程

    pinetwork节点教程_搭建ss教程文章目录1、简介2、Pi节点安装2.1、操作系统2.2、路由器设置2.3、Docker安装2.4、PiNode安装1、简介    2020年3月31日(太平洋时间)Node软件的测试版上线此,版本号0.015。写下这篇文章时,版本号已更新至0.3.8。Pi节点的安装设置过程稍复杂,在此做个总结。2、Pi节点安装2.1、操作系统2.2、路由器设置2.3、Docker安装2.4、PiNode安装…

    2022年10月8日
  • 记录虚拟机桥接模式不能上网问题的解决方法「建议收藏」

    记录虚拟机桥接模式不能上网问题的解决方法「建议收藏」问题一:一直连接不上网络,右上角的网络模式显示连接不到sudovi/etc/network/interfaces初始情况下,只有以下两行autoloifaceloinetloopback在桥接模式下,需要添加以太网卡的启动,在下面添加两行autoens33ifaceens33inetdhcp看网卡的不同,填不同的,例如eth0,通过ifconfig查看本机网卡问题二:右上角显示连接上了,但是不能ping通外网开启主机的VMwareDHCP.

    2022年4月29日
  • Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]

    Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]1.插件的添加在相应的<joint>标签内添加如下代码:<sensorname=”force_torque”type=”force_torque”><update_rate>30</update_rate></sensor>运行world:gazebo–verboseforce_torque_tutorial.world查看传感器输出:法1:命令查看gztopi

    2022年5月15日
  • leetcode 回文数_将一个整数转换为字符串

    leetcode 回文数_将一个整数转换为字符串原题链接请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“1

    2022年8月9日
  • spring源码系列(二)——毁三观的spring自动注入

    spring源码系列(二)——毁三观的spring自动注入比如提到spring的自动注入作为一个java程序员肯定自信无比了解;但是笔者要说的自动注入可能会和你理解有很大出入。首先搞明白什么是自动注入,自动注入也可以叫做自动装配(springboot也有一个自动装配但是我认为翻译的不够准确,springboot的应该叫做自动配置和这里说的自动注入是两回事,笔者不是什么大牛或者权威;所以读者如果你坚持认为springboot也叫自动装配那也无可厚非,只…

    2022年10月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号