sql >> Base de Datos >  >> RDS >> Mysql

Bash Script Bucle a través de MySQL

algo como:

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 resumen:el mysql el comando genera registros separados por '\n' y campos separados por '\t' cuando la salida es una canalización. el read El comando lee una línea, divide en campos y coloca cada uno en una variable.

si sus datos tienen espacios en los campos, tendrá algunos problemas con el read predeterminado terrible. hay algunas maneras de evitarlo; pero si solo está leyendo dos campos y uno de ellos no debería tener espacios (como el guid ), luego puede poner el campo 'peligroso' al final y read pondrá todo 'extra' en la última variable.

así:

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