您的位置:首页 > 数据库

用批处理写的:数据库备份还原工具

2010-07-20 08:48 323 查看
由于平时要进行数据库的备份和还原操作,为了提高效率和节省时间就有了下面的批处理程序,这是针对oracle编写的,可以用在不同的电脑上,因为它会自动读取当前电脑的环境变量,从而取得oracle的安装路径,唯一有一点不足的地方是程序中运行过程中会产生一个中间文本文件,不过这并不碍大事,备份或者还原完了以后将会自动删除产生文本文件,代码如下:

@echo off&setlocal enabledelayedexpansion
color 0a
:start
for /f "tokens=2 delims==" %%a in ('path') do (
set "str=%%a"
set str=!str: =+!
for %%i in (!str!) do (
set "var=%%i"
set var=!var:+= !
echo !var!>>change.txt
for /f "delims=" %%i in ('findstr "Db_1\bin" change.txt') do set var=%%i
)

)

set /p choice=1.备份 2.还原 3.按任意键退出:
if %choice%==1 goto exp
if %choice%==2 goto imp
:exp
del /q change.txt
set /p file=请输入备件数据库的文件名:
set /p path=请输入存放的路径(记得输冒号:):
"%var%"\exp.exe smhr/smhr@orcl file=%path%\%file% full=n
set /p choice=1.继续 2.按任意键退出:
if %choice%==1 goto start
:imp
del /q change.txt
set /p file=请将要导入的数据库文件拖入窗体内:
"%var%"\imp.exe smhr/smhr@orcl file=%file% full=y
set /p choice=1.继续 2.按任意键退出:
if %choice%==1 goto start要注意代码中的@orcl 如果你的电脑上只有一个数据库,那么这个写不写是不碍事的,但是如果有两个数据那么这个是必须得写的,否则会出现用户名密码失败。

今天(2010.07.15)又再次看了看,以前写过的这个批处理,发现了一些问题,以前考虑的是环境变量中的第一条路径是oracle的,可是在我现在工作的电脑上的环境变量是这样的

e:\Oracle\product\10.1.0\Client_1\bin;e:\Oracle\product\10.1.0\Client_1\jre\1.4.2\bin\client;e:\Oracle\product\10.1.0\Client_1\jre\1.4.2\bin;e:\oracle\product\10.1.0\Db_1\bin;e:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin\client;e:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin;E:\Python26;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;E:\Program Files\Subversion\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs
看到了吧前面的并不是我们想要的,我写的这个批处理真正需要的是以下这行路径

e:\oracle\product\10.1.0\Db_1\bin
所以需要将原代码中的

for /f "delims=" %%i in ('findstr "oracle" change.txt') do set var=%%i
改为

for /f "delims=" %%i in ('findstr "Db_1\bin" change.txt') do set var=%%i
这样以来,就能适应任何环境的主机了,因为我们查询的是Db_1\bin

今天(2010.07.20)从今天开始我要把我在javaeye发表的文章都转过来,受不了javaeye了本文出自 “博客即日起停止更新” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: