一、数据备份(导出)
1、exp命令导出dmp文件(exp -help查看帮助信息)
命令:exp username/userpasswd@orcl file=G:/test.dmp log=G:/test.log tables=tablename1,tablename2...(不写tables时表示导出当前用户所有表)
2、exp备份数据库中表结构(不要数据)
命令:exp username/userpasswd@orcl file=G:/test.dmp log=G/test.log tables=tablename1,tablename2...(不写tables时表示导出当前用户所有表)rows=n;
3、PL/SQL导出
new Report Window--->写sql将要导出的数据查询出来--->Export Results导出不同文件类型的数据
二、数据恢复(导入)
1、imp命令导入dmp文件(imp - help查看帮助信息)
命令:imp username/userpasswd@orcl file=G:/test.dmp full=y;
2、imp命令导入表结构(不要数据)
(1)dmp文件包含数据
imp username/userpasswd@orcl file=G:/test.dmp full=y rows=n;
(2)dmp文件本身就不包含数据
imp username/userpasswd@orcl file=G:/test.dmp full=y;
3、PL/SQL导入(貌似只能导入dmp文件)
Tools ---> import tables
4、导入csv文件
csv文件样式(test.csv):
删除第一行,确保第一行看是就是数据内容。
创建对应字段的表(要导进去数据的表t_emp)...
创建ctl文件(test.ctl):
LOAD DATA
INFILE "G:/test.csv" --指定外部数据文件(要导入的csv文件)
INSERT(APPEND,REPLACE,TRUNCATE) INTO TABLE t_emp--指定要导入的表(INSERT 要求导入之前表就为空;APPEND是指在表中追加记录;REPLACE表示删除旧记录‘delete’,替换成新纪录;TRUNCATE表示删除旧记录‘truncate’,替换成新纪录)
FIELDS TERMINATED BY X'09' --数据中每行记录默认用“,”隔开(为了防止数据记录中有‘,’则使用制表符X'09')
TRAILING NULLCOLS --表中字段没有对应值时,允许为空
(columnName1, columnName2...)
执行命令:
sqlldr username/userpasswd@orclcontrol=G:/test.ctl log=G:/test.log
这个表示导入成功的数据行数。excel数据格式的数据可以通过更换数据格式为csv文件格式,再进行导入操作。
三、imp导入dmp文件出现错误(表空间“xxx”不存在)解决方案
方案一:
(1)会话窗口1用system用户登录,查找导入的目标数据库的默认表空间
select username, default_tablespace from dba_users where username='目标数据库名';
(2)执行修改表空间语句(假设目标数据库的表空间名是:xxx_tablespace)
alter tablespace xxx_tablespace rename to xxx;
(3)会话窗口2执行imp语句
(4)导入成功后,会话窗口1执行改回原来表空间的名称
alter tablespace xxx rename to xxx_tablespace;
方案二:
根据log信息重新创建对应的表,然后再执行imp语句(注意:要加上ignore=y)