:: script upgrade database into sybase 12 :: script needs to sybase 12 32-bit has to be installed on this computer :: script create directory "reloadPath" in current path :: if upgrade is succesfull this directory can be removed :: script makes also backup of upgrading database into .backup :: responsible: Adam Bella :: :: arguments: :: 1. - databse file (can be full or relative path) :: [2. - databse user (default=dba)] :: [3. - databse password (default=swx)] :: :: return codes: :: 0 - skript succesfully upgrade database :: 1 - databse name is invalid or database does not exist :: others - error code of dbunload, dbinit or dbisql @echo off :: cesta k databaze SET "DB_NAME=%~f1" SET "DB_USER=%2" SET "DB_PASSWORD=%3" SET "BIN_DIR=bin32" :: error codes SET ERROR_DB_UNKNOWN=0 IF ["%DB_NAME%"] == [""] ( echo invalid database name exit /b %ERROR_DB_UNKNOWN% ) IF ["%DB_USER%"] == [""] ( echo using default user SET "DB_USER=dba" ) IF ["%DB_PASSWORD%"] == [""] ( echo using default password SET "DB_PASSWORD=swx" ) echo databse name set into [%DB_NAME%] IF not exist %DB_NAME% ( echo neznama cesta k databaze [%DB_NAME%] exit /b %ERROR_DB_UNKNOWN% ) SET "DB_LOG=%~dp1%~n1.log" SET "RELOAD_PATH=%CD%\reloadPath" SET "RELOAD_FILE=%RELOAD_PATH%\reload.sql" SET "RELOAD_BACKUP_FILE=%RELOAD_FILE%.backup" rd /S /Q "%RELOAD_PATH%" md "%RELOAD_PATH%" echo (1/4) creating backup: echo database file into %DB_NAME%.backup COPY "%DB_NAME%" "%DB_NAME%.backup" /Y echo database log file into %DB_LOG%.backup COPY "%DB_LOG%" "%DB_LOG%.backup" /Y echo (2/4) unloading database [%DB_NAME%] into %RELOAD_FILE% "%SqlAny12%\%BIN_DIR%\dbunload" -c "uid=%DB_USER%;pwd=%DB_PASSWORD%;dbf=%DB_NAME%" "%RELOAD_PATH%" -r "%RELOAD_FILE%" -o "%CD%\unload.log" IF %errorlevel% neq 0 ( echo dbunload was unsuccessfull: %errorlevel% exit /b %errorlevel% ) attrib -R "%DB_NAME%" DEL /Q "%DB_NAME%" IF %errorlevel% neq 0 ( echo deleting %DB_NAME% was unsuccessfull: %errorlevel% exit /b %errorlevel% ) attrib -R "%DB_LOG%" DEL /Q "%DB_LOG%" IF %errorlevel% neq 0 ( echo deleting %DB_LOG% was unsuccessfull: %errorlevel% exit /b %errorlevel% ) echo (3/4) creating new database %DB_NAME% "%SqlAny12%\%BIN_DIR%\dbinit" -p 16384 -z utf8 "%DB_NAME%" IF %errorlevel% neq 0 ( echo dbinit was unsuccessfull: %errorlevel% - restoring backup COPY "%DB_NAME%.backup" "%DB_NAME%" /Y COPY "%DB_LOG%.backup" "%DB_LOG%" /Y exit /b %errorlevel% ) echo (4/4) loading data %RELOAD_FILE% to new database %DB_NAME% "%SqlAny12%\%BIN_DIR%\dbisql" -c "uid=dba;pwd=sql;dbf=%DB_NAME%" -nogui SET TEMPORARY OPTION public.STRING_RTRUNCATION='OFF'; READ "%RELOAD_FILE%" IF %errorlevel% neq 0 ( echo dbisql was unsuccessfull: %errorlevel% - restoring backup COPY "%DB_NAME%.backup" "%DB_NAME%" /Y COPY "%DB_LOG%.backup" "%DB_LOG%" /Y exit /b %errorlevel% ) echo Upgrade done successfully goto :eof :: params search_line replacing_line source_file :replaceLines @echo off SETLOCAL enableextensions SETLOCAL enabledelayedexpansion SET "OLD_VALUE=%~1" for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do ( set "line=%%B" if defined line ( set "replaced=!line:%OLD_VALUE%=!" if not !replaced! == !line! ( echo.%~2 ) else ( echo.!line! ) ) else echo. )