シェルスクリプトでSQLを実行して、結果を美味しく頂く方法 | 仕事たのしいなーもー

仕事たのしいなーもー

SEブログです。日々の発見や関心を掲載しています。


シェルの中でSELECTを実行して、その結果を取り出すのに
色々試行錯誤した結果、素敵なやり方を思いついたのでメモメモ。

1.SQLを書く

SELECT CONCAT('id=', id) FROM tbl_hogehoge
→ 保存。 get_id.sql
ここがミソ。結果をキーバリューの形にするわけです。


2.SQLを実行する

sql=`cat get_id.sql`
res=`mysql -e "$sql" | sed -e "1s/.*$//g"`

これでresの中には「id=XXXXX」が入る


3.evalしちゃう

eval `echo $res`


4.参照できちゃう

echo ${id}
→ XXXX

対象のカラムがNULLだったり、空白を含んでるとうまくいかないので
ifnullやquoteを駆使するヨロシ。

さらに、複数のカラムを射影すると・・・

SELECT
CONCAT('id=', id),
CONCAT('name=', name),
CONCAT('attr=', attr)
FROM tbl_hogehoge


たった一行evalするだけで、
eval `echo $res`

${id}も、${name}も${attr}も取れるようになります。

以上です。