您的当前位置:首页正文

数据库数据导入导出方法

2020-03-10 来源:步旅网
数据库数据导入导出方法

1

逻辑导入 备份方法:

在主机服务器的DOS提示符下输入:

EXP USERID=ZLHIS/HIS BUFFER=4096 FILE=D:\\20040101.dmp LOG=D:\\20040101.log OWNER=(ZLHIS) ROWS=Y INDEXES =Y CONSTRAINTS =Y GRANTS=Y DIRECT=N 表示只导出zlhis用户的数据对象 Buffer:该值越大,导出的时间略短。 File:表示导出的dmp的文件路径 Log:表示导出的日志文件路径 其余参数可以通过exp help=y查询。 2

逻辑导出

在主机服务器的DOS提示符下输入:

IMP USERID=ZLHIS/HIS FROMUSER=(ZLHIS) TOUSER=(ZLHIS) BUFFER=30720 FILE=D:\\20040101.dmp LOG=D:\\20040101.log ROWS=Y INDEXES=Y CONSTRAINTS =Y GRANTS =Y SHOW=N COMMIT =Y IGNORE=Y 表示只导入zlhis用户的数据对象 Buffer:该值越大,导入的时间略短。 File:表示导入的dmp的文件路径 Log:表示导入的日志文件路径

Ignore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,

同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。 其余参数可以通过imp help=y查询。 3

工作小技巧

执行imp命令时,切记不要在工作站上导入数据到服务器。以免在导入过程中,万一与服务器数据库断开连接造成导入错误。导入imp一定到在服务器上执行,dmp文件也只能放在服务器本地磁盘。 4

自动逻辑备份

通过编写dos命令脚本生成批处理命令文件,然后在主机服务器上添加计划任务来实现。 备份方法:

在任何磁盘上根目录下新建bak文件夹,在bak文件夹中新建week0.dmp,将下面的dos命令复制到新建txt中,把x:\\修改为实际的路径,然后将*.txt命令为zlautoexp.bat批处理文件。

@ECHO OFF IF EXIST X:\\bak\\WEEK0.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak0.dmp grants=y full=y IF EXIST X:\\bak\\WEEK1.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak1.dmp grants=y full=y IF EXIST X:\\bak\\WEEK2.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak2.dmp grants=y full=y IF EXIST X:\\bak\\WEEK3.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak3.dmp grants=y full=y IF EXIST X:\\bak\\WEEK4.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak4.dmp grants=y full=y IF EXIST X:\\bak\\WEEK5.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak5.dmp grants=y full=y IF EXIST X:\\bak\\WEEK6.DMP X:\\oracle\\product\\10.2.0\\db_1\\BIN\\Exp.exe userid=sys/his buffer=4096 file=X:\\bak\\WeekBak6.dmp grants=y full=y

IF EXIST X:\\bak\\WEEK6.DMP REN X:\\bak\\WEEK6.DMP WEEK7.DMP

IF EXIST X:\\bak\\WEEK5.DMP REN X:\\bak\\WEEK5.DMP WEEK6.DMP IF EXIST X:\\bak\\WEEK4.DMP REN X:\\bak\\WEEK4.DMP WEEK5.DMP IF EXIST X:\\bak\\WEEK3.DMP REN X:\\bak\\WEEK3.DMP WEEK4.DMP IF EXIST X:\\bak\\WEEK2.DMP REN X:\\bak\\WEEK2.DMP WEEK3.DMP IF EXIST X:\\bak\\WEEK1.DMP REN X:\\bak\\WEEK1.DMP WEEK2.DMP IF EXIST X:\\bak\\WEEK0.DMP REN X:\\bak\\WEEK0.DMP WEEK1.DMP IF EXIST X:\\bak\\WEEK7.DMP REN X:\\bak\\WEEK7.DMP WEEK0.DMP

@ECHO ON

如下图:注意修改路径。

然后在控制面板的计划任务添加zlautoexp的计划任务执行时间,根据用户的需求来调整备份时间,使用administrator用户必须给该用户添加密码。 或者在dos命令提示符下输入以下命令可以实现自动备份: at 2:00 /every:m,t,w,th,f,s,su \"X:\\bak\\zlautoexp.bat\"

时间每周七天自动备份文件路径

同理在zlautoexp中添加主机字符串,同样可以在工作站上实现异地自动逻辑备份。 添加自动备份任务:保证服务里Task Scheduler打开,而且在命令提示符中输入的自动备份命令完全是在后台自动执行,前台不会出现任何提示 5

数据泵导入导出

SQL> Create directory TEST as 'd:\est'; SQL> Grant read,write on directory TEST to system; 查看数据库中已创建的directory的两个视图: SELECT * FROM ALL_DIRECTORIES; SELECT * FROM dba_DIRECTORIES; 然后在目标磁盘下手工创建文件夹d:\est

 数据泵导出

数据泵导出的方法有多种,这里我们只介绍两种:  单个用户方案导出

Expdp[用户名]/[密码]@[主机字符窜]schemas=[用户名] dumpfile=X.dmp logfile=X.log directory=TEST  数据库全库导出

Expdp[用户名]/[密码]@[主机字符窜] full=y dumpfile=X.dmp logfile=X.log directory=TEST  数据泵导入

按以上导出方式:  单个用户方案导入

impdp[用户名]/[密码]@[主机字符窜]schemas=[用户名] dumpfile=X.dmp

logfile=X.log directory=TEST_EXPDPignore=y  数据库全库导入 impdp

system/his@orcl

full=y

dumpfile=X.dmp

logfile=X.log

directory=TEST_EXPDPignore=y 6

drop directory test 删除目录

因篇幅问题不能全部显示,请点此查看更多更全内容