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

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

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s