Mysql
 sql >> Database >  >> RDS >> Mysql

Ciclo di script Bash tramite MySQL

qualcosa come:

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

in breve:il mysql record di output del comando separato da '\n' e campi separati da '\t' quando l'output è una pipe. il read Il comando legge una riga, divide i campi e li inserisce in una variabile.

se i tuoi dati hanno spazi nei campi, riscontri dei problemi con l'impostazione predefinita read scissione. ci sono alcuni modi per aggirarlo; ma se stai leggendo solo due campi e uno di essi non dovrebbe avere spazi (come il guid ), quindi puoi mettere il campo 'pericoloso' alla fine e read metterà tutto 'extra' nell'ultima variabile.

così:

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