Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bash-Skriptschleife durch MySQL

etwas wie:

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

kurz:das mysql Der Befehl gibt Datensätze getrennt durch '\n' und Felder getrennt durch '\t' aus, wenn die Ausgabe eine Pipe ist. den read Der Befehl liest eine Zeile, teilt sie in Felder auf und fügt jedes in eine Variable ein.

Wenn Ihre Daten Leerzeichen in den Feldern enthalten, erhalten Sie einige Probleme mit dem Standardwert read Aufspaltung. es gibt einige Möglichkeiten, es zu umgehen; aber wenn Sie nur zwei Felder lesen und eines davon keine Leerzeichen enthalten sollte (wie die guid ), dann können Sie das 'gefährliche' Feld ans Ende setzen und read wird alles 'extra' in die letzte Variable setzen.

so:

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