① 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文件,如下图:
等待导出完成
②导出数据文件
导出步骤tools ->export tables,选择要导出的表及导出的格式进行导出。
导出为dmp格式,如下图:
导出为sql格式,如下图:
导出为pde格式,如下图:
备注:采用第三方工具导出导入整个数据库的话,耗时较长,一定要有足够的时间来操作(数据量大的话需要好几个小时)
3. 导入方法
登录plsql工具,使用之前准备工作所创建的用户。
步骤类似导出方法
①导入建表语句
导入步骤tools->import tables->SQL Inserts 导入.sql文件
②导入数据
tools->import talbes,然后再根据导出的数据格式选择导入dmp文件,或者sql文件,或者pde文件。
备注:导入之前最好把以前的表删除,当然导入另外数据库除外。
另外导入时当发现进度条一直卡在一个点,而且导出的文件不再增大时,甚至是提示程序未响应,千万不要以为程序卡死了,这个导入导出就是比较缓慢,只要没有提示报错,或者导入完成就不要停止程序。