Mysql offre la possibilità di eseguire comandi dalla riga comandi e cioè al di fuori della classica finestra sql sia essa grafica che a caratteri.
Questa possibilità ci permette di integrare script di bash con output provenienti da mysql.
Un utilizzo classico di mysql da riga comandi è quello di ottenere un dump di una database al fine di utilizzato per salvare quest'ultimo.
Un uso meno frequente di mysql è quello di eseguire una select per utilizzare l'output in file script bash. Ed è proprio quest'ultimo utilizzao che voglio condividere con voi.
Lo scopo è quello di salvare delle directory con il comando tar. L'elenco delle directory viene letto da una tabella mysql.
# parametri per accedere al database
dbuser="root"
dbpassword="your_db_password"
host="localhost"
dbname="dbispconfig"
# select
select='SELECT domain, document_root from web_domain where document_root is not null;'
# mysql command elaborato dall'utiliti linux awk per visualizzare due colonne...
mysql --batch --raw --skip-column-names -u$dbuser -p$dbpassword -h$host -D$dbname -e"$select" \
| awk '{
print "tar -pczf /var/backup/temp/"$1 ".tar.gz " $2
}'
Nell'esempio di è letta la tabella web_domain contenuta nel database dbispconfig e nel caso specifico la select sql è stata utilizzata per leggere 2 colonne.
L'output generato da mysql è stato rielaborato dall'utiliti awk al fine di memorizzare per ogni riga il contenuto delle colonne nelle variabili $1 e $2.
Note sui parametry di mysql
switch | descrizione |
--skip-column-names | Serve a eliminare dall'output le intestazioni di colonna |
--raw | Non effettua conversione sui campi ed è utilizzato insieme a --batch |
--batch | Esecuzione del comando in batch senza aprire la console interattiva di mysql |
REFERENCES
From mysql reference guide
- 4.5.1. mysql — The MySQL Command-Line Tool
- 4.5.2. mysqladmin — Client for Administering a MySQL Server
- 4.5.3. mysqlcheck — A Table Maintenance Program
- 4.5.4. mysqldump — A Database Backup Program
- 4.5.5. mysqlimport — A Data Import Program
- 4.5.6. mysqlshow — Display Database, Table, and Column Information