技術メモのかけら

内容はもとより調べたことすら忘れてしまうので個人的なメモです。とにかく短く、結論だけ書いていきます。

postgreSQLに接続するシェルのテンプレート

個人的メモ。
たくさんのDBにまとめて同じSQLを実行するテンプレート。
SQLをヒアドキュメントで書くようにしてるけど、長くなるようだったら外出しにしよう。

#!/bin/sh

#DBサーバとインスタンスの指定
SETTINGS=("dbserv01 db01" "dbserv01 db02" "dbserv02 db01")

for setting in "${SETTINGS[@]}"
do

#半角スペース区切りの文字列を配列に変換
conf=(`echo $setting`)

psql -e -U postgres -h ${conf[0]} ${conf[1]} >logs/normal.log 2>logs/error.log << EOF

set client_min_messages to warning;
/* 実行するSQLを記述 */

EOF

if [ ! -s logs/error.log ]; then
  /bin/rm logs/error.log
else
  echo "なんかエラーだってさ"
  /bin/cat logs/error.log
fi

done

exit