[MySql] : vider toutes les tables d’une base

Print Friendly, PDF & Email

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
person hands on assorted color plastic lid lot

Photo by Krizjohn Rosales on Pexels.com

 

Découvrez  [Mysql] : comment déconnecter un utilisateur ? (de force)