mysqlのバッチモードいろいろ

bashなどから一括して処理をおこないたいときにはインタラクティブモードではなく直接SQLを実行します。

「-e」オプションでバッチモードです。

mysql -u{user} -p{pass} -e "{sql}"

bashでemailを指定して、userIdなどを取得して、あとでそれを使うときなどは
「-N -s」でヘッダー削除などをおこなえます。

#!/bin/sh

email=$1

if [ "$email" = "" ]; then
    echo "usage: ./$0 {email}"
    exit 1
fi

userid=`mysql -u{user} -p{pass} -N -s -D{database} -e "select user_id from user where email = '${email}';"`

echo "user_id: ${userid}"

バッチモードの実行結果をテキストに出力などをすると、テーブルの表示が消えます。
テーブルなどを表示したいときは「-t」を使います。

mysql -u{user} -p{pass} -t -e "{sql}" | tee {file}

なおdeleteやupdateを実行すると影響のあったレコードの数が返り値としてでますが、
バッチモードの場合はそれはどうも取得できなさそうです。