LoginSignup
1
2

More than 3 years have passed since last update.

バッチファイルから、SQLを実行させる方法

Posted at

環境

windows 10
postgreSQL 13

バッチファイルの作成

★の箇所は内容が変動するので、ディレクトリに配置した後修正が必要。

rem --------------------------------------------------
rem DB接続パラメータ
rem --------------------------------------------------
set PGPATH=C:\"Program Files"\PostgreSQL\13\bin\★
set HOSTNAME=localhost
set PORTNUM=5432
set DBNAME=postgresset USERNAME=postgresset PGPASSWORD=××××××★
rem --------------------------------------------------
rem bat実行パラメータ
rem --------------------------------------------------
set LOGFILE=result.log
set ERRORFILE=error.log
set SQLFILE=test.sql
rem --------------------------------------------------
rem SQL実行
rem --------------------------------------------------
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -f %SQLFILE% 1>%LOGFILE% 2>%ERRORFILE%

shutdown /s /f /t 0

 説明

set は代入、 remはコメントアウトです。
最初の15行でひたすら必要な内容を代入していきます。
batファイルを実行すると、result.logとerror.logが自動で作られるようになります。本当は実行結果とエラーの結果を1つにまとめて出力できるようにしたかったのですが、知識不足でできませんでした。

ここでは、test.sqlというファイルを作成し、それをSQLFILEに代入しています。
代入した引数は%%で囲みます。
-f %SQLFILE%で、test.sqlを実行しています。

1> は 標準出力をLOGFILEにリダイレクト
2>は エラー出力をERRORFILEにリダイレクトすることを表しています。

最後のshutdownコマンドで、PCが勝手にシャットダウンされます。必要なければこの1文は消しましょう。

これで、バッチファイルを実行すると、SQLを実行することができます。あとは、SQLファイルにバックアップのコマンドを書いたり、データをロードするコマンドを書くなどすると、バッチファイルをダブルクリックするだけで自動で実行されます!

自動でバッチファイルを実行する方法

さらに便利にする方法として、バッチファイルを自動で実行する方法もあります。ここでは、夜間にバッチファイルを実行する方法を書いていきます(夜間バッチは企業で多く実施されているので)。

左下スタートから「プログラムとファイルの検索」欄に「タスクスケジューラ」と打ち込む。タスクスケジューラをクリックし起動。操作タブから「タスクの作成」を選択。

①「全般」タブより、名前と説明を入力。

名前(M):バッチデータロード

説明(D):バッチの夜間データロードをします。

②「トリガー」タブより、「新規」ボタンを押して、設定欄で1回にチェックが入っているのを確認したら、開始時間を任意で設定。

③「操作」タブより、「新規」ボタンを押して、操作欄がプログラムの開始になっていることを確認。設定欄で「プログラム¥スクリプト」に「参照」ボタンから作った「バッチファイル」を指定。

D:\Users\×××\test_data\test.bat みたいな記述を書く。

「OK]ボタンを押して、「タスクの作成」画面に戻り、さらに「OK]ボタンで閉じる。

これで、任意の指定した時間に自動でバッチファイルを実行(バッチファイルにSQL実行コマンドを書いているので、SQLが実行される)。

これで、真夜中に自動でバックアップがされたり、大量のデータをロードすることで日中に時間を割かずに済みますね。便利。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2