利用数据泵导出导入数据
命令:EXPDP/IMPDP
第一:创建directory对象,可以在命令行,也可以在客户端上运行
CREATE DIRECTORY DUMP_DIR AS? '/home/dump'
原因:导入导出工具只能将转储文件存放在DIRECTORY对象对应的os目录中,所以必须建立directroy对象,并且需要授权(读写)
第二:授权
GRANT read,write on directory dump_dir to scott;
这里授权给用户scott读写权限
特别注意点:其中存储的os目录需要改成oracle用户和组,否则报错,如图
chown -R oracle:oinstall dumr.dir即可
测试,具体其他参数可以参考其他资料,个人总结记录学习过程中的易错点
导出语句:expdp scott/tiger directory=dump_dir dumpfile=tab.dmp tables=emp,dept
--解释:导出scott用户下的表emp,dept,存储文件在directory对应的目录下,文件名字为tab.dmp
导入语句:
impdp system/system?directory=dump_dir dumpfile=tab.dmp tables=scott.emp,scott.dept remap_schema=scott:system
--解释:将刚刚导出的表导入导system用户(模式)下,remap_schema参数导入其他模式需要使用
关于导出和导入
1.可以按模式导出,导入
expdp system/system?directory=dump_dir dumpfile=schema.dmp schemas=scott,hr
----------------------------------
impdp system/system?directory=dump_dir dumpfile=schema.dmp schemas=scott remap_schema=scott:system;
2.按表空间导出,导入
expdp system/system?directory=dump_dir dumpfile=tablespace.dmp? tablespaces=tbsp_1
------------------------------
impdp system/system?directory=dump_dir dumpfile=tablespace.dmp? tablespaces=tbsp_1
3.导出全部数据库
expdp system/system?directory=dump_dir dumpfile=fulldatabase.dmp? full=y;
-------------------------
impdp?system/system?directory=dump_dir dumpfile=fulldatabase.dmp? full=y;
可以发现导入和导出除了命令不通,其他基本相同,设计不通模式,需要用remap_schema参数来映射,其他测试用例还有很多,可以自行研究各个参数来测试。
RMAN备份恢复数据库的物理文件,注意下区别。
命令:sqlldr
第一,自由格式
1)建表
---sql*Loader工具
CREATE table student--自由格式
(
?? ?stuno NUMBER(4),
?? ?stuname varchar2(20),
?? ?sex varchar2(4),
?? ?old number(4)
);
2)编写数据文件
3)编写控制文件
控制文件内容:
load data
?? ?infile '/home/dumr.dir/student.txt'
?? ?into table student(
?? ?stuno position(01:04) integer external,
?? ?stuname position(11:14) char,
?? ?sex position(21:22) char,
?? ?old position(29:30) integer external
)
?
4)执行
sqlldr system/system control=/home/dumr.dir/student.ctl log=/home/dumr.dir/stu_log;
5)测试结果
第二,固定格式(csv)
1)建表
2)编写数据文件
1005,east,nn
1006,west,nv
3)编写控制文件
load data
?? ?infile '/home/dumr.dir/person.csv'
?? ?append into table person
?? ?fields terminated by ','
?? ?(code,name,sex)
4)执行
sqlldr system/system control=/home/dumr.dir/person.ctl log=/home/dumr.dir/per.log
5)测试结果