Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别

时间:2024-03-31 16:01:27

① Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好, 

 ② Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错 

 ③ Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具导入导出,不能用文本编辑器查看。 
   ④    csv格式:.csv格式的文件;
 


EXPDP和IMPDP
EXP和IMP

采用exp/imp命令

知识扩充: 
 数据泵导出导入(EXPDP和IMPDP)的作用 
  1、实现逻辑备份和逻辑恢复。 
  2、在数据库用户之间移动对象。 
  3、在数据库之间移动对象 
  4、实现表空间搬移。 
 数据泵导出导入与传统导出导入的区别: 
  在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项: 
  EXP和IMP是客户段工具程序,它们既可以在客户端使用,也可以在服务器段使用。 
   EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用 
  IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

采用第三方工具(以PLSQL为例)

1. 导出格式介绍

 ① Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好, 
 ② Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错 
 ③ Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具导入导出,不能用文本编辑器查看。 
备注:虽然dmp格式为最优选,但是不容易实现,原因有俩点:首先此格式需要安装oracle完整版,因为导出时需要选择对应exp.exe与imp.exe,而且导出是安装的版本要与要导出数据的数据库版本一致,同理导入时也要对应,否则会出现版本不一致的问题(查阅资料中介绍的,个人没有证实);其次此格式的导出经常会遇到导出过程一闪而过,但是导出不成功的情况,原因未知(可以查阅环境变量配置ORACLE_HOME配置正确,个人尝试多次,仍有问题,最后无奈选取导出为pde格式)。






使用PDE文件导出数据和传统EXP/IMP方式的区别

 

oracle数据库导出导入常用的有两种方式:

 

 

         其一是:使用命令行调用exp和imp命令来实现。可以通过设定命令参数来实现自己的功能需要。具体的参数含义可以在windows命令行下运行:exp help=y和imp help=y来查看具体的参数说明。这里导出的文件是dmp格式的文件。其运行原理在附录。

 

 

         其二是:通过使用PL/SQLdeveloper工具tool菜单里的import和export图形化工具中的Plsql developer导出方式来实现。这种方式可以选择三种文件导出格式dmp(也就是第一种方式上面oracle标准格式),sql格式,pde格式

 

 

 

         两种方式主要的区别就在于他们导出的文件格式所带来的区别,下面分别介绍三种导出文件格式的区别。

 

 

 

         DMP格式:首先是通用性的问题,dmp文件是oracle原生的导入导出文件,它本身是二进制文件,导入导出速度快,压缩率高,移植性好可以跨平台使用但是只限于oracle数据库之间,还可以包含权限,但是导入到另一个数据库时受到数据表空间、用户名等约束,这是可以用PLSQLdeveloper工具tool菜单中的Export User Object导出你想要的表空间和表的sql脚本或者你可以直接写sql新建表空间和表。还有一点这个工具是向下兼容的也就是说高版本的oracle数据库导出的文件不可以导入到低版本的oracle数据库中,低版本的dmp文件也只能导入到只比他高一个版本的oracle数据库中(附录中列出了对于版本问题的简单总结)。高版本想低版本导数据就要就要选择其他两种文件格式了。

 

         然后是速度问题,通过dmp文件导入数据库,默认是先导入数据,再创建索引,所以dmp方式速度上会比较高N+log2N。

 

         不过在实际的工作环境中exp/imp命令方式的最大难点在于错误处理,因为该方式涉及到的各项约束较多可能会出现某些数据导入不成功,此时排查错误并修正数据需要仔细甄别。另外oracle版本的问题在实际工作中也是一个比较麻烦的问题。

 

 

 

         SQL格式,顾名思义,sql格式的文件就是一个sql的运行脚本文件,这决定了这个文件可以在几乎所有的主流数据库运行,还可以在文本编辑器上查看修改,通用性比较好,但是正因为需通用于大部分主流数据库,所以它的sql文件里,只能保存通用类型,如oracle的大数据类型clob,blob在使用sql导入导出时,就会发生错误。遇到其他数据库的特定类型,也是如此。而且假使表比较多,数据量比较大的话,得到的相应的sql文件也比较多,不方便管理和使用。         

 

         不过效率上sql不如上面的dmp文件,适合小批量的数据处理。

 

        

 

         PDE格式,这是PLSQLdeveloper这个oracle数据库管理工具特有的格式,只能通过PLSQL developer导出数据产生,也只能通过PLSQL developer将其中数据导入到数据库。文件也不能通过编辑器查看和编辑。不过这种方式不受源数据表空间、用户名等约束,且数据量更小。可以处理clob,blob等大类型,但是也只能用于oracle。不过通过pde文件导入数据是,默认是先建立了索引,之后再向表中插入数据,插入数据时要维护索引(N*log2N),所以速度比较慢,建议当通过pde导入数据时,可以选择不保留索引,或者先创建table,然后删除索引,最后导入数据;

 

        

 

         综上所述:

 

         如果你面对的数据库是oracle而且使用的是PLSQLdeveloper 管理来管理你的oracle。你大可以不再用命令行exp和imp命令,plsql的oracle 方式也可以在功能上完全代替exp和imp,操作上也更方便。如果使用pde方式来导数据,效率适中,可视化操作方便,导入导出的时候可以不必考虑版本、表空间等问题,也可以处理大类型,但是数据量很大时我个人经验i5标准电压笔记本cpu几十万条的数据都已经慢到不行了,pde类型的速度还是太慢,此时导入导出时必须去掉索引数据迁移完成之后再建立索引,再进一步如果面对的是一个大型的数据库有几百张表,你要把整个数据库迁移,那么删除所有索引的做法就显得不那么有效,这时候就建议使用dmp文件的方式。sql模式则适合那些表较少,数据也少的数据库的迁移,如果需要甚至可以用文本编辑器修改导出的文件。

 

 

 

附录:

 

         1. 调用exp和imp命令来实现数据导入导出的原理:

 

       exp用户进程通过服务器进程连接到数据库,开启shadow进程,同时执行select语句查询数据库中的数据,通过buffer cache并通过SQL语句处理层再转移出exp导出文件,即exp进程需要占用服务器上的SGA和PGA资源。imp读取exp导出的.dmp文件,构造DDL语句,插入创建表与其他对象以及添加数据的语句

 

原文全文链接: 

 

exp/imp与expdp/impdp学习笔记

 

         2.Oracle的imp/exp组件是我们常用的工具,它的一个操作原则就是向下兼容。下面是据此总结的几个使用规则和相关测试:

 

    规则1:低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp不能连接到低版本的数据库服务器

 

    规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件)

 

    规则3:低版本exp出的dmp文件,高版本可以imp(向下兼容)

 

    规则4:从Oracle 低版本的Export数据可以Import到Oracle高版本中,但限于Oracle的相邻版本

 

    下面的博客链接有实际测试结果。

 

原文全文链接

 

oracle不同版本间数据的导入导出

————————————————

版权声明:本文为CSDN博主「shawn_jinbang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/shaojinbang_/article/details/51917218






 

采用exp/imp命令

知识扩充: 
 数据泵导出导入(EXPDP和IMPDP)的作用 
  1、实现逻辑备份和逻辑恢复。 
  2、在数据库用户之间移动对象。 
  3、在数据库之间移动对象 
  4、实现表空间搬移。 
 数据泵导出导入与传统导出导入的区别: 
  在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项: 
  EXP和IMP是客户段工具程序,它们既可以在客户端使用,也可以在服务器段使用。 
   EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用 
  IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

1. 导出命令

 导出与导入分别都有三种方式: 
 ①完全模式导出(导入): 
  将整个数据库内容导出,但是操作时需要有特殊权限, 
  exp 用户名/密码buffer=32000file=导出的目录 full=y 
  例如:

exp system/manager buffer=32000 file=d:\iom.dmp full=y

  • 1

 ②用户模式导出(导入) 
  将指定用户的所有对象进行导出,例如:

exp iom/iom buffer=32000 file=d:\iom.dmp owner=iom

  • 1

 ③表模式导出(导入) 
  将用户的所有表数据进行导出,例如:

exp iom/iom buffer=32000 file=d:\iom.dmp owner=iom tables=(iom)

  • 1

备注:可以执行exp help=y、imp help=y查看帮助命令,以及执行exp或者imp查看对应版本号。

 导出步骤: 
 首先切换到oracle用户(数据库超级管理员)

[[email protected] ~]$ su - oracle

  • 1

 根据所需要采用的导出模式进行导出

[[email protected]~]$exp iom/iom file=iom.dmp log=oradb.log full=y compress=y direct=y

  • 1

  COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。 
其他参数可参照帮助命令,或者其他资料进行学习。在此不一一赘述。

2. 导入命令

 登录服务器,切换到oracle用户。

[[email protected] ~]$ su - oracle

  • 1

 执行导入命令: 
  导入时需要用准备工作中创建的新用户,如:用户名abc,密码ABC 
  imp 用户名/密码 file=dmp文件路径 log=输出日志路径full=y ignore=y; 
  例如:

[[email protected] ~]$imp abc/ABC file=/home/oracle/iom.dmp log=/home/oracle/iom.log full=y ignore=y;

  • 1

温馨提示:采用数据泵导入过程经常会遇到问题,建议多查阅资料,总有方法解决。相信每一件事物都有它存在的必要性,问题只是暂时的,成功才是必然的!

三、采用第三方工具(以PLSQL为例)

1. 导出格式介绍

 ① Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好, 
 ② Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错 
 ③ Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具导入导出,不能用文本编辑器查看。 
备注:虽然dmp格式为最优选,但是不容易实现,原因有俩点:首先此格式需要安装oracle完整版,因为导出时需要选择对应exp.exe与imp.exe,而且导出是安装的版本要与要导出数据的数据库版本一致,同理导入时也要对应,否则会出现版本不一致的问题(查阅资料中介绍的,个人没有证实);其次此格式的导出经常会遇到导出过程一闪而过,但是导出不成功的情况,原因未知(可以查阅环境变量配置ORACLE_HOME配置正确,个人尝试多次,仍有问题,最后无奈选取导出为pde格式)。

2. 导出方法

登录plsql工具,所使用用户为源数据库有导出权限(exp_full_database,dba等)的用户。 
 ①导出建表语句(包括存储结构) 
 导出步骤tools ->export user object,选择要导出的对象,导出.sql文件,如下图: 
Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
  等待导出完成

 ②导出数据文件 
  导出步骤tools ->export tables,选择要导出的表及导出的格式进行导出。 
  导出为dmp格式,如下图: 
  
Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
  
  导出为sql格式,如下图: 
  
Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
  
  导出为pde格式,如下图: 
  
Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
备注:采用第三方工具导出导入整个数据库的话,耗时较长,一定要有足够的时间来操作(数据量大的话需要好几个小时)

3. 导入方法

登录plsql工具,使用之前准备工作所创建的用户。 
 步骤类似导出方法 
 ①导入建表语句 
  导入步骤tools->import tables->SQL Inserts 导入.sql文件 
 ②导入数据 
   tools->import talbes,然后再根据导出的数据格式选择导入dmp文件,或者sql文件,或者pde文件。 
  备注:导入之前最好把以前的表删除,当然导入另外数据库除外。 
     另外导入时当发现进度条一直卡在一个点,而且导出的文件不再增大时,甚至是提示程序未响应,千万不要以为程序卡死了,这个导入导出就是比较缓慢,只要没有提示报错,或者导入完成就不要停止程序。