On a pas tous une âme de DBA mais ces dernières années les sgbd ce sont tellement simplifiés que finalement les actions restent assez accessibles pour tous. Alors on cherche toujours à aller un peu plus loin.
Mysql est très facile à utiliser en ligne de commande. Du coup cela permet aussi de manipuler ses output dans une ligne bash ou awk.
Vider toutes les tables d’une base de données en une ligne c’est possible voici comment :
MYSQL_CONNECT="mysql -h hostname -u username -ppassword -D database"; $MYSQL_CONNECT -Bne "show tables;" | awk '{print "set foreign_key_checks=0; drop table `" $1 "`;"}' | $MYSQL_CONNECT unset MYSQL
Donc :
- on créé une variable permettant de lancer le binaire mysql avec les éléments de connexions
- on lance le binaire avec l’option -Bne ( n : flush du cache , B : tabulation comme séparateur , e : sql entre quotes )
- on génère le sql pour dropper la table mais on set le fait de ne pas s’occuper des clés étrangères
- on unset les variables