Mysql
 sql >> Base de données >  >> RDS >> Mysql

Boucle de script bash via MySQL

quelque chose comme :

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

en bref :le mysql la commande affiche un enregistrement séparé par '\n' et des champs séparés par '\t' lorsque la sortie est un tube. le read La commande lit une ligne, la divise en champs et place chacun sur une variable.

si vos données ont des espaces dans les champs, vous rencontrez des problèmes avec le read par défaut scission. il y a des façons de contourner cela; mais si vous ne lisez que deux champs et que l'un d'eux ne devrait pas avoir d'espaces (comme le guid ), alors vous pouvez mettre le champ 'dangereux' à la fin, et read mettra tout 'extra' dans la dernière variable.

comme ceci :

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