シェルでDBからデータを取得する

概要

普段はPHPを使って、DBからデータを取得しています。
通常はそれで問題ないですが、PHPだとサーバに入れる必要があります。

ちょっとしたデータを取る際に、いちいちサーバにPHPを入れるのが面倒だと感じました。
そこで、PHPを入れないでもDBからデータを取得できるように、シェルでスクリプトを書いてみます。 (CentOSならPythonも選択肢になりますが、Pythonはかけないので除外)

コード

#!/bin/bash

# DB定義
DB_HOST="host"
DB_USER="ユーザ名"
DB_PASS="パスワード"
DB_NAME="DB名"
MYSQL_COMMAND="/usr/bin/mysql"

# DBからデータを取得
QUERY="SELECT * FROM hoge WHERE hogehoge;"
ROWS=`${MYSQL_COMMAND} -N -u ${DB_USER} --password=${DB_PASS} -h ${DB_HOST} ${DB_NAME} -e "${QUERY}" 2>&1`
IS_QUERY_SUCCESS=`echo "$ROWS" | grep "ERROR"`
if [ -n "$IS_QUERY_SUCCESS" ]; then
    echo "Failed to getChatHistory\n"
    echo "$ROWS"
fi

# csv形式で格納
echo "$ROWS" | tr '\t' ','

これでざっくりデータをとってきて、csv形式の吐き出しは完了。
ちょっとしたデータを引っ張るなら、これくらいで良いかなと思いますが、エラーキャッチとか出来ていなそうだし、DB周りの情報はベタだし…、ちゃんと使うのは微妙なコードですね^^;