スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

psqlとbashの連携

DBの結果を使ってさくっと処理をしたいと思った時に、Javaとか使うといちいちJDBCが必要だったりとか、他のスクリプト言語でもライブラリが必要だったりして、ちょいとめんどいです。
PostgreSQLがインストールされていればpsqlがあるので、それを使って結果をbashで使えたら便利ですよね。
ということで、DBにファイルパスを管理して有効期限が切れたら削除するbashスクリプトを書いてみます。

CREATE TABLE t_file (
file_name text,
yuko_ts timestamp with time zone
)


#!/bin/bash
DIR=/var/app/data
VAL=`/opt/postgresql/bin/psql -t -A -U user dbname <<_EOF
select
file_name
from
t_file
where
now() > yuko_ts
_EOF`
ARY=($VAL)
for TARGET in ${ARY[*]}
do
rm -f $DIR/$TARGET
done

psqlの-tオプションは、結果の行だけを返すようになります。-Aオプションは結果の行の桁そろえを行いません。
この二つのオプションで結果だけを取得できます。
psqlの結果はVALに保存されて、空白文字で区切られています。
()で配列に変換して、ループで回して使っています。

一行入魂サイトにまとめがあります。

追記 2009/10/23 14:22
タイトルのミスと、テーブル構造を追加
スポンサーサイト

Tag : bash

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。