MENU

【Windows / コマンドプロンプト】Postgresコマンドをバッチで簡単に実行する

目次

Postgresのコマンドをbatファイルから実行する

簡単にできます。まず、環境変数をセットします。

  • set PGPATH=”C:\Program Files\PostgreSQL\10\bin\”
    (postgres.exeが保管されているパスを参照。参照させないとpsqlコマンドが動きません。)
  • set HOSTNAME=localhost
    (ホスト名を設定。)
  • set PORTNUM=5432
    (ポートを設定。基本的には「5432」ポートが多い。)
  • set DBNAME=database
    (データベース名を設定。環境をチェックしましょう。)
  • set USERNAME=postgres
    (ユーザー名を設定。)
  • set PGPASSWORD=postgres
    (パスワードを設定。)

※set PGPATHが使えない場合は、WindowsのシステムでPATHを直接設定おく必要があります。
こちらの記事をチェックしてみてください。

実際に使ってみる

「%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c」の後ろに
実行したいSQL文を入れることで実行することができます。

REM --------------------------------------------------
REM DB接続パラメータ
REM --------------------------------------------------
set PGPATH="C:\Program Files\PostgreSQL\10\bin\"
set HOSTNAME=localhost
set PORTNUM=5432
set DBNAME=database
set USERNAME=postgres
set PGPASSWORD=postgres
REM --------------------------------------------------

%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "ここに実行したいSQL文を入れる!!"

pause

データ数のカウントをしたい場合は

REM --------------------------------------------------
REM DB接続パラメータ
REM --------------------------------------------------
set PGPATH="C:\Program Files\PostgreSQL\10\bin\"
set HOSTNAME=localhost
set PORTNUM=5432
set DBNAME=database
set USERNAME=postgres
set PGPASSWORD=postgres
REM --------------------------------------------------


REM ########## データ数カウント ##########
ECHO "「scm01」スキーマの「logdata」「userdata」「adddata」テーブル数をカウントします。"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "SELECT COUNT(*) from scm01.logdata;"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "SELECT COUNT(*) from scm01.userdata;"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "SELECT COUNT(*) from scm01.adddata;"

pause

CSVデータで出力をしたい場合は

REM --------------------------------------------------
REM DB接続パラメータ
REM --------------------------------------------------
set PGPATH="C:\Program Files\PostgreSQL\10\bin\"
set HOSTNAME=localhost
set PORTNUM=5432
set DBNAME=database
set USERNAME=postgres
set PGPASSWORD=postgres
REM --------------------------------------------------

REM ########## CSV出力 ##########
ECHO "「scm01」スキーマの「logdata」「userdata」「adddata」テーブルをCSVデータで出力します。"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "COPY (select * from scm01.logdata) TO STDOUT WITH CSV DELIMITER E'\t' FORCE QUOTE * NULL AS '' HEADER;" > "C:\Users\user01\Desktop\%date:~0,4%%date:~5,2%%date:~8,2%_logdata.csv"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "COPY (select * from scm01.userdata) TO STDOUT WITH CSV DELIMITER E'\t' FORCE QUOTE * NULL AS '' HEADER;" > "C:\Users\user01\Desktop\%date:~0,4%%date:~5,2%%date:~8,2%_userdata.csv"
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "COPY (select * from scm01.adddata) TO STDOUT WITH CSV DELIMITER E'\t' FORCE QUOTE * NULL AS '' HEADER;" > "C:\Users\user01\Desktop\%date:~0,4%%date:~5,2%%date:~8,2%_adddata.csv"

pause
よかったらシェアしてね!

この記事を書いた人

目次
閉じる