環境:Windows10 Pro 1909, PostgreSQL10.0
- やりたいこと
実行するだけでdumpファイルをとりたい。
何度実行しても問題がないようにしたい。
- 実際のバッチファイル
※ DB接続情報は実際の環境に合わせて書き換える前提
REM //戻り値
SET C_OKRET=0
SET C_NGRET=1
REM //DB接続情報
SET PGHOST=localhost
SET PGPORT=5432
SET PGDATABASE=dbname
SET PGUSER=dbuser
REM //バックアップディレクトリ設定(カレントディレクトリ)
SET BACKUP_DIR=%~dp0
REM //日付情報(バックアップディレクトリに付与する年月日時分秒を取得)
SET TMPTIME1=%TIME: =0%
SET TMPTIME2=%TMPTIME1:.=%
SET NOWTIME=%TMPTIME2::=%
SET NOW=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%NOWTIME:~0,6%
PUSHD %~DP0
REM //タイムスタンプのあるフォルダの作成
MKDIR %BACKUP_DIR%\%NOW%
REM //バックアップ実行
pg_dump -h %PGHOST% -U postgres -c %PGDATABASE% > %BACKUP_DIR%\%NOW%\%PGDATABASE%.dump
REM //エラー発生時はカレントディレクトリにログを出力
IF %errorlevel% neq 0 (
ECHO %date% %time:~0,8% 実行に失敗しました ErrorCode=%errorlevel%^
FileName「%SQLFILE%」 >> %~DP0\psql_log.txt
POPD
EXIT /b %C_NGRET%
) ELSE (
POPD
EXIT /b %C_OKRET%
)
バッチファイルの終了を「EXIT /b ~」とすることで、呼び出し元へステータスを返せるように指定。
なお、返り値は数値であることに注意。