Supprimer toutes les tables non propres au site

Si on a une base de données par site wordpress, parfois, lors d’un exporte, il arrive qu’on ait récupérer des tables d’autres sites, avec d’autres préfix, on peut les supprimer.

On suppose ici que la BD de votre site wordpress ne stocke rien d’autres d’utiles, faites bien un backup de la BD avant toute opération.

Grâce à wp-cli, on peut réaliser ceci en une commande:

old_tables=$(echo "show tables" | wp-cli db cli  | tail -n +2 | grep -v "^$(wp-cli db prefix)")

if [[ -z $old_tables ]]; then
    echo "No table to clean..."
else
    while read db; do
        echo "Remove $db..."
        echo "drop table $db" | wp-cli db cli
    done <<< "$old_tables"
fi