sql >> データベース >  >> RDS >> Mysql

MySQLを介したBashスクリプトループ

    次のようなもの:

    mysql -e "SELECT `theme_name`, `guid` FROM `themes` WHERE `theme_purchased`='1' AND `theme_compiled`='0'" | while read theme_name guid; do
        # use $theme_name and $guid variables
        echo "theme: $theme_name, guid: $guid"
    done
    

    要するに:mysql コマンドは、出力がパイプの場合、「\n」で区切られたレコードと「\t」で区切られたフィールドを出力します。 read コマンドは行を読み取り、フィールドを分割し、それぞれを変数に配置します。

    データのフィールドにスペースがある場合、デフォルトのreadで問題が発生します 分割。それを回避する方法はいくつかあります。ただし、2つのフィールドのみを読み取り、そのうちの1つにスペースを含めるべきではない場合(guidなど) )、最後に「dangerous」フィールドを配置して、readすることができます。 すべての「余分な」を最後の変数に入れます。

    このように:

    mysql -e "SELECT `guid` `theme_name`, FROM `themes` WHERE `theme_purchased`='1' AND `theme_compiled`='0'" | while read guid theme_name; do
        # use $theme_name and $guid variables
        echo "theme: $theme_name, guid: $guid"
    done
    


    1. MySQLでSTRICTSQLモードを取り除く方法

    2. MySQL:ORDER BY RAND()の代替

    3. クライアントとサーバー間の接続の構成Oracle10g

    4. OracleDBで外部キーとそれらが参照するテーブルのリスト