天天看点

Oracle 导入/导出 exp/imp

export 导出数据,dmp文件,其实就是select。

import 导入数据,其实就是insert

缺陷:导出的时候需要全表导出,速度慢,不是实时,而且是逻辑备份

1:EXP

exp导出分为一下几种模式

表模式:               导出某个用户下指定的表

用户模式:           导出某个用户下所有的对象

数据库模式:      导出除sys以外数据库里所有的对象,exp_full_database权限

可传输表空间:    导出某个表空间所有对象

exp语句使用帮助:$ exp help=y

1.1:导出某个用户下指定的表

$ exp doiido/doiido file=doiido.dmp tables=(doiido,boy) log=doiido.log

1.2:导出某个用户下所有的对象

$ exp doiido/[email protected] file=doiido.dmp owner=doiido log=doiido.log

1.3:导出整个数据库(除了sys用户下的数据字典)

SQL> grant exp_full_database to doiido;

$ exp doiido/doiido file=doiido.dmp full=y log=doiido.log

1.4:导出表空间

$ exp system/[email protected] file=doiido.dmp tablespaces=(doiido)

1.5:在windows下远端导出

C:\Windows\system32>exp doiido/[email protected]:1521/doiido file=d:\doiido.dmp tables=boy log=d:\doiido.log

导出的两种方式

传统路径:使用SQL语句查询方式,需要经过缓存

直接路径:使用数据块抽取方式,direct=y

2:IMP导入

1:导入某个用户指定的表

$ imp doiido/doiido file=doiido.dmp tables=(doiido,boy) log=doiido.log

2:导入用户test所有的对象到doiido

$ imp doiido/doiido file=doiido.dmp fromuser=test touser=doiido log=doiido.log

执行导入的顺序

创建表结构

导入表的数据

创建相关索引

导入触发器

对导入的表启用完整性约束

建立所有位图、函数以及其他索引

imp的时候如果导入的表已经存在

ignore=y ##表示导入的时候忽略同名对象,导入的操作是追加

3:其他

(1)导入导出的过程可以更换用户,但是必须有相同的表空间在,这样导入才能够成功

(2)导出的时候会有wainings是正常的,因为有些索引或主外键之类的没有被导出 

(3)导入导出的时候还需要注意字符集的必须是相同或者是子集