PostgreSQLを直接コマンドで操作する方法まとめ【dump、restore、createなど】

PostgreSQLでDBを追加・削除する時にいちいちpgAdminに入るのが面倒だという方におすすめしたいのが、DB操作系のexeをコマンドプロンプトから直接呼び出す方法です。

バッチファイルにしておけば設定値を書き換えるだけでいいので、頻繁にpgAdminから操作している方は試してみるといいかもしれません。

このページで記載しているコードは全てバッチファイルに貼り付けて実行できるようにしています。必要に応じて、ホスト、DB名、EXEのパスなど、設定値を変更してください。

また、コマンドプロンプト内でパスワードを求められます。(セキュリティ上、打ち込んでも文字列表示はされません)

DB情報を一覧取得する

コマンド、オプションの詳しい解説はこちら

「-l」がDB一覧取得で、「-H」でHTML形式に整形しています。

SET EXE_PATH="C:\Program Files\PostgreSQL\13\bin\psql.exe"
SET HOST="localhost"
SET USER_NAME="postgres"
SET PORT=5432

%EXE_PATH% --host=%HOST% --port=%PORT% --username=%USER_NAME% -l -H postgres
pause

空のDBを作成する

コマンド、オプションの詳しい解説はこちら

REM ====環境変数設定====
SET EXE_PATH="C:\Program Files\PostgreSQL\13\bin\createdb.exe"
SET HOST="localhost"
SET DB_NAME="MyDatabase"
SET USER_NAME="postgres"
SET PORT=5432

REM ====DB作成実行====
%EXE_PATH% --port=%PORT% --host=%HOST% --username=%USER_NAME% %DB_NAME%
pause

DBをバックアップする

コマンド、オプションの詳しい解説はこちら

ファイル名に実行日時を付けて、バックアップした時間をわかるようにしています。このサンプルではバックアップファイルの形式を「.sql」にしていますが、「.backup」にしても構いません。

REM ====環境変数設定====
SET EXE_PATH="C:\Program Files\PostgreSQL\13\bin\pg_dump.exe"
SET BACKUP_PATH=c:\DbBackup
SET HOST="localhost"
SET DB_NAME="MyDatabase"
SET USER_NAME="postgres"
SET PORT=5432
REM ====ファイル名設定====
SET HOUR=%time:~0,2%
SET HOUR=%HOUR: =0%
SET DATETIME=%date:~0,4%%date:~5,2%%date:~8,2%%HOUR%%time:~3,2%%time:~6,2%
SET FILE_NAME=%BACKUP_PATH%\%DATETIME%.sql

REM ====バックアップ実行====
md %BACKUP_PATH%
%EXE_PATH% --format=custom --host=%HOST% --port=%PORT% --dbname=%DB_NAME% --username=%USER_NAME%  --file=%FILE_NAME%

pause

DBをリストアする

コマンド、オプションの詳しい解説は

BACKUP_PATHに、バックアップファイルのフルパスを設定します。拡張子は「.backup」でも「.sql」でも、どちらでも構いません。

REM ====環境変数設定====
SET EXE_PATH="C:\Program Files\PostgreSQL\13\bin\pg_restore.exe"
SET BACKUP_PATH="c:\DbBackup\test.backup"
SET HOST="localhost"
SET DB_NAME="MyDatabase"
SET USER_NAME="postgres"
SET PORT=5432

REM ====リストア実行====
%EXE_PATH% --host=%HOST% --port=%PORT% --dbname=%DB_NAME% --username=%USER_NAME% %BACKUP_PATH%
pause

DBを削除する

コマンド、オプションの詳しい解説はこちら

SET EXE_PATH="C:\Program Files\PostgreSQL\13\bin\dropdb.exe"
SET HOST="localhost"
SET USER_NAME="postgres"
SET DB_NAME="MyDatabase"
SET PORT=5432

%EXE_PATH% --host=%HOST% --port=%PORT% --username=%USER_NAME% %DB_NAME%
pause

コメント

タイトルとURLをコピーしました