使用empdp和impdp导出和导入数据库的表

数据泵技术比原来导入/导出(imp,exp)技术快15-45倍。速度的提高源于使用了并行技术来读写导出转储文件。此命令只可用在服务端,客户端无法使用。

1.打开SQL plus

首先需要输入用户名和密码进行登录;

创建一个directory对象:create directory dpdata1 as 'd:\test\dump';

然后查看当前实例下有哪些导出目录可使用:select * from dba_directories;

最后登录一个管理员的账户来给目前的账户赋予读写的权限:grant read,write on directory dpdata1 to scott;

若想赋予全部的权限即管理员权限:grant dba to scott;

若重新创建一个新用户:create user username identified by password;

给新用户赋予登录的权限:grant connect,resource to username;

2.启用和禁用主键等

Type Code Type Description Acts On Level
C Check on a table Column
O Read Only on a view Object
P Primary Key Object
R Referential AKA Foreign Key Column
U Unique Key Column
V Check Option on a view Object
--删除所有主键约束 的Sql代码 
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP drop constraint EMP_PK ;
--禁用所有主键约束的Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP disable constraint EMP_PK ;
--启用所有主键约束的Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'   
--alter table EMP enable constraint EMP_PK ;

禁用掉主键等后会使导入导出的速度提高。

3.导出数据

按表导出(可单个或多个):

expdp scott/admin@orcl directory=dpdata1 dumpfile=expdp.dmp tables=BONUS,emp,dept

结尾不要加分号;

按用户导出:expdp scott/admin@orcl directory=dpdata1 dumpfile=expdp.dmp schemas=scott

导出所有所有表:expdp scott/admin@orcl directory=dpdata1 dumpfile=expdp.dmp full=y

4.导入数据

impdp yyb/yyb@orcl directory=dpdata1 dumpfile=expdp.dmp remap_schema=scott:yyb exclude=user(用户已存在,最后不要加分号)

impdp yyb/yyb@orcl directory=dpdata1 dumpfile=expdp.dmp remap_schema=scott:yyb//用户不存在;

从scott用户导入到yyb用户。

5.拓展:

查询Oracle表是否有触发器:

select * from user_triggers where table_owner = 'xxx' and table_name = upper('table_name');

导出数据
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

还原数据
1)导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加数据

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

6删除数据

truncate table test;
truncate与delete的异同:
      TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
  DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
  TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。

猜你喜欢

转载自blog.csdn.net/qq_25086397/article/details/81065442