【原创】用DOS批处理实现两个Oracle数据库中多表的互导

一、建一个批处理文件,如Export.bat,内容如下:

@echo off

rem 此脚本由Shinetan编写

 

if "%1"=="" goto end

 

rem dds/ddsowner1@dds

set Source=dds/dds.owner@dds

set Target=dds/ddsowner@dev.ico

set ParaTables=%1

set OperateTime= 

 

:SetTime

if "%time:~0,1%"==" " goto TimeSmallThen10

:TimeLargerThen10

  set OperateTime=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%

  goto SetTimeEnd

:TimeSmallThen10

  set OperateTime=%date:~0,10%_%time:~1,1%-%time:~3,2%-%time:~6,2%

  goto SetTimeEnd

:SetTimeEnd

 

rem 创建以时间为名称的目录

md %OperateTime%

 

type nul >%OperateTime%\SQL.inp

rem echo drop table %ParaTables%; >%OperateTime%\SQL.inp

:LOOP   

  IF   [%1]==[]   GOTO   LOOP_END   

  REM   保存参数,以做回归分析   

  echo drop table %1; > %OperateTime%\tmp.inp

  type %OperateTime%\SQL.inp >> %OperateTime%\tmp.inp

  type %OperateTime%\tmp.inp > %OperateTime%\sql.inp

  set ParaTables=%ParaTables%,%1

  SHIFT   

  GOTO   LOOP   

:LOOP_END   

 

echo 导出源表

exp %Source% Tables=%ParaTables% File=%OperateTime%\Source.dmp direct=y log=%OperateTime%\Exp.log

echo 备份目标表

exp %Target% Tables=%ParaTables% File=%OperateTime%\Backup.dmp direct=y log=%OperateTime%\Backup.log

echo 删除目标表

sqlplus %Target% <%OperateTime%\SQL.inp

echo 导入新表

imp %Target% Tables=%ParaTables% File=%OperateTime%\Source.dmp log=%OperateTime%\Imp.log

 

rem 记录

echo Source=%Source% >>%OperateTime%\Export.log

echo Target=%Target% >>%OperateTime%\Export.log

echo Tables=%ParaTables% >>%OperateTime%\Export.log

 

echo Ok.

 

:END

pause

@echo on

 

 

二、调用方法:Export [table1,table2,table3,...]

posted @ 2009-06-25 08:48  一 缕 阳 光  阅读(558)  评论(0编辑  收藏  举报