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

alkoshikawa 181views 更新:2015年4月7日

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を実行すると影響のあったレコードの数が返り値としてでますが、
バッチモードの場合はそれはどうも取得できなさそうです。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません