PostgreSQL > SQLファイルの一括実行

2012-03-06 19:02:31 (Tue);

好みです。

@echo off
cd /d %~dp0

rem ---
rem  %APPDATA%\postgresql\pgpass.conf に 以下の1行を追加
rem  172.21.0.1:5432:*:userid:passord
rem  [ホスト]:[ポート]:[データベース]:[ユーザ]:[パスワードの形式]
rem ---

SET HOSTNAME=172.21.0.1
SET PORT=5432
SET USERID=userid
SET PASSWD=passord
SET DATABASE=dbname

rem psql.exeにパスを通す
SET PATH=%PATH%;C:\Program Files\pgAdmin III\1.10

SET DT=%DATE:~-10%
SET TM=%TIME:~-11%
SET DTC=%DT:~0,4%%DT:~5,2%%DT:~8,2%
SET TMC=%TM:~0,2%%TM:~3,2%%TM:~6,2%
SET SUFFIX=_BK_%DTC%_%TMC%


rem pgpass.confが無い場合は追加する
IF NOT EXIST "%APPDATA%\postgresql\pgpass.conf" (
	ECHO "□□□ not find pgpass.conf"
	MKDIR "%APPDATA%\postgresql"
	ECHO %HOSTNAME%:%PORT%:*:%USERID%:%PASSWD% > "%APPDATA%\postgresql\pgpass.conf"
)

rem ログを出力する
IF EXIST log (
  ECHO backup log...
  MOVE log log%SUFFIX%
  RMDIR /Q /S log
)
MKDIR log

rem sqlフォルダ内の[.sql]ファイルを実行する
FOR /F "usebackq delims==" %%i IN (`DIR /B sql\*.sql`) DO (
	ECHO ■■■ [%%i]
	psql.exe -h %HOSTNAME% -p %PORT% -d %DATABASE% -U %USERID% -f sql\%%i > log\%%i.log 2>&1
	ECHO □□□ --^> [%ERRORLEVEL%]
)

:EXIT_PROCESS
PAUSE



最終更新:2012年03月06日 19:02