@echo off
echo **************************************************************
echo *      Desc:    UNL数据 导入Oracle                           *
echo *      Conn:    [email protected]                        *
echo *      Date:    2011.03.04                                   *
echo *      Creator: sinosoft                                     *
echo **************************************************************REM 设置日期 + 时分秒
set hourF=%TIME:~0,2%
set dateF=%date:~0,4%%date:~5,2%%date:~8,2%
if %TIME:~0,2% leq 9 (set hourF=0%TIME:~1,1%) else (set hourF=%TIME:~0,2%)
set timeF=%hourF%%TIME:~3,2%%TIME:~6,2%
set daTimSec=%dateF%%timeF%
set dsPath=F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\REM 文件是否存在
if not exist F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\cargo_list_main.unl (
    echo 错误提示:cargo_list_main.unl 文件不存在!
    pause
    exit
)
REM 数据备份文件夹
if not exist 备份数据 (md 备份数据)REM 1:导入数据
SQLLDR user/95214@P_6 control= F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\cargo_list_main.ctl log=F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\log.txt bad = F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\cargo_list_main_bad.txt errors = 100000
REM 2:数据备份
move F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\cargo_list_main.unl .\备份数据\main_%daTimSec%.unlREM 数据导入有错误
if exist cargo_list_main_bad.txt ( 
    REM 数据备份
    move F:\workspace\pmjtProject\WebRoot\upload\trafficInvoice\cargo_list_main_bad.txt .\备份数据\bad_%daTimSec%.txt
    echo ********************************
    echo *       数据导入有错误,       *
    echo *    请查看日志和备份文件!    *
    echo ********************************
    
) else (  
    REM 数据全部导入
    echo ********************************
    echo *       数据全部导入:成功!   *
    echo ******************************** 
)
exit

解决方案 »

  1.   

    学习linux脚本的写法,然后一步一步的写sh吧,没有捷径.
      

  2.   

    熟悉shell脚本吧,语法不是很复杂。
      

  3.   

    前不久我给客户写了一个备份oracle数据库的sh脚本
    贴给你吧改一下oracle环境变量及用户和实例就可以执行的
    #/bin/sh
    echo "欢迎使用IDTRUST双因子认证_令牌管理系统oracle备份还原脚本"if [ "$#" -ne 1 ]; then
       echo "backup.sh ( parms must is backup | resume )"
       exit 1
    fiecho "debug: 开始配置数据备份/还原前得准备..."echo "debug: 获取当前时间..."
    dtime=`date +%Y%m%d%H%M%S`
    echo "debug: 数据备份/还原时间是: "$dtimeecho "debug: 设置oracle环境变量值..."ORACLE_BACKUP=/idtrust/idtrust
    ORACLE_BASE=/idtrust/oracle
    ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    USERID=idtrust/idtrust@idtrustdbif [ "$1" = "backup" ]; thenecho "debug: 创建备份数据及日志包存放目录..."backurl=$ORACLE_BASE/backup_datas
    if [ ! -d "$backurl" ]; then
       mkdir $backurl
    fiecho "debug: 备份数据及日志包存放路径: "$backurlnewdir=$backurl/$dtime"_backup"chmod 777 $backurl
    mkdir $newdir
    chmod 777 $newdirecho "debug: 创建还原数据及日志包存放目录..."resumeurl=$ORACLE_BASE/resume_datas
    if [ ! -d "$resumeurl" ]; then
       mkdir $resumeurl
    fichmod 777 $resumeurlecho "debug: 还原数据及日志包存放路径: "$resumeurl
    echo "debug: 创建还原数据包历史数据存放目录..."resumebackurl=$resumeurl/backup_resume_datas
    if [ ! -d "$resumebackurl" ]; then
       mkdir $resumebackurl
    fi
    chmod 777 $resumebackurlecho "debug: 还原数据包历史数据存放路径: "$resumebackurl
    echo "debug: 开始进行数据备份...""$ORACLE_HOME/bin/exp" $USERID owner=idtrust rows=y compress=n buffer=65536 feedback=100000 file=$newdir/$dtime"_backup.dmp" log=$newdir/$dtime"_backup.log"echo "debug: 数据备份成功..."echo "debug: 压缩备份数据文件目录..."
    cd $backurl
    tar -cvf $dtime"_backup".tar $dtime"_backup"/echo "debug: 压缩成功..."
    #echo "debug: 备份旧的还原数据包..."
    echo "debug: 删除旧的还原数据包..."cd $resumeurl
    #mv *.tar $resumebackurl/
    rm -rf *.tarecho "debug: 将最新备份压缩包拷贝到数据还原目录..."cp $backurl/$dtime"_backup".tar $resumeurl
    echo "debug: 清除备份数据文件..."rm -rf $backurl/$dtime"_backup"echo "清除完毕..."
    echo "备份完毕..."elif [ "$1" = "resume" ]; thenresumeurl=$ORACLE_BASE/resume_datasecho "debug: 将要进行数据库还原的数据包路径: "$resumeurl
    echo "debug: 解压最新备份数据包进行数据库还原..."cd $resumeurl
    tar -xvf *.tar
    mv *_backup/*.dmp resumenow.dmpredir=$dtime"_resume"
    mkdir $redir
    chmod 777 $redirecho "debug: 开始进行数据还原...""$ORACLE_HOME/bin/imp" $USERID rows=y full=y buffer=65536 feedback=100000 file=$resumeurl/resumenow.dmp log=$resumeurl/$redir/$redir.logecho "debug: 数据还原成功..."echo "debug: 压缩还原数据包及日志目录..."resumebackurl=$resumeurl/backup_resume_datas
    mv resumenow.dmp $redir/$redir.dmptar -cvf $resumebackurl/$redir.tar $redir/
    echo "debug: 压缩成功..."echo "debug: 清除还原数据文件..."rm -rf *_backup
    rm -rf $redirecho "清除完毕..."
    echo "数据还原完毕..."else
       echo "backup.sh ( parms must is backup | resume )"
       exit 1
    fi
      

  4.   

    有了这个文件。只需要到该目录,执行./backup.sh backup备份,./backup.sh resume恢复