シェルで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周りの情報はベタだし…、ちゃんと使うのは微妙なコードですね^^;