sql >> Databasteknik >  >> RDS >> Mysql

Bash Script Loop Through MySQL

något som:

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

kort sagt:mysql kommandoutgångar post separerade med '\n' och fält separerade med '\t' när utgången är en pipe. read kommandot läser en rad, delar upp i fält och sätter var och en på en variabel.

om din data har mellanslag i fälten får du några problem med standard read splittring. det finns några sätt runt det; men om du bara läser två fält och ett av dem inte ska ha några mellanslag (som guid ), så kan du sätta fältet "farligt" i slutet och read kommer att lägga allt "extra" i den sista variabeln.

så här:

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. Utmaningar med att skala Moodle MySQL-databasen

  2. I Redshift/Postgres, hur räknar man rader som uppfyller ett villkor?

  3. MySQL Connector/C++ OS X 10.9 Mavericks och XCODE 5.0.2

  4. Databassäkerhet 101:Säkerhet i databaser med öppen källkod