指定したフォルダ内にある複数のSQLを実行するbat(PostgreSQL)
たぶんこれでいいはず。
2017/4/11追記: カレントディレクトリが移動したまんまになっていたので終了前に戻すよう修正
@echo off pushd %~dp0 rem --------------------------------------------- rem [PostgreSQL] rem 指定したフォルダ内にある複数のSQLを実行する rem "Syntax: this_bat <db_name> <input_dir>" rem -%1 ... db_name: SQLを実行するDB名称 rem -%2 ... input_dir: 入力ディレクトリ(SQLがあるディレクトリ) rem --------------------------------------------- rem Check args IF "%1"=="" ( goto END_ARG_ERROR ) IF "%2"=="" ( goto END_ARG_ERROR ) rem DB接続情報 set USERID=postgres set DBNAME=%~1 set HOST=localhost set PORT=5432 rem SQLがあるフォルダの指定 set input_dir=%~2 IF NOT EXIST %input_dir% ( echo input_directory does not exist... goto END_ARG_ERROR ) rem PostgreSQLへ接続 & %input_dir%にある全SQL実行 pushd %input_dir% echo Executing SQL... for %%i in (*.sql) do ( psql -h %HOST% -p %PORT% -U %USERID% -d %DBNAME% -f %%i ) echo Done... goto END_STD rem 正常終了------------------------------------ :END_STD pushd %~dp0 pause exit /b rem 異常終了(引数異常)------------------------------------ :END_ARG_ERROR echo "Arg error." echo "Syntax: this_bat <db_name> <input_dir>" pause exit /b