Table des matières

DROP TABLE (Si on veut juste détruire les tables)

echo "SET FOREIGN_KEY_CHECKS = 0;" > ./temp.sql
mysqldump --add-drop-table --no-data -u root -p db_name | grep 'DROP TABLE' >> ./temp.sql

supprimer en masse: bash script

on a une base avec plein de vieilles tables pourries, ici pour l'exemple on va chercher le motif lime_old_.*

#!/bin/bash
 
# Configuration
DB_USER="votre_utilisateur"
DB_PASS="votre_mot_de_passe"
DB_NAME="nom_de_votre_base"
TABLE_PATTERN="lime_old_%"
 
# 1. Récupérer la liste des tables
TABLES=$(mysql -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME" -N -e \
  "SELECT table_name FROM information_schema.tables WHERE table_schema='$DB_NAME' AND table_name LIKE '$TABLE_PATTERN';")
 
# Vérification si des tables ont été trouvées
if [ -z "$TABLES" ]; then
  echo "Aucune table ne correspond au motif '$TABLE_PATTERN'."
  exit 0
fi
 
echo "Les tables suivantes vont être supprimées :"
echo "$TABLES"
read -p "Confirmez-vous la suppression ? (oui/non) : " CONFIRM
 
if [ "$CONFIRM" != "oui" ]; then
  echo "Opération annulée."
  exit 0
fi
 
# 2. Supprimer les tables
for TABLE in $TABLES; do
  echo "Suppression de $TABLE..."
  mysql -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME" -e "DROP TABLE $TABLE;"
  if [ $? -eq 0 ]; then
    echo "✓ Table $TABLE supprimée."
  else
    echo "✗ Erreur lors de la suppression de $TABLE."
  fi
done
 
echo "Terminé."

supprimer en masse: mysql cmd

-- 1. Définir les variables
SET @db = 'nom_de_votre_base';
SET @pattern = 'lime_old_%';
 
-- 2. Sélectionner explicitement la base de données
USE nom_de_votre_base;
 
-- 3. Générer la commande de suppression dynamique
SELECT GROUP_CONCAT(CONCAT('DROP TABLE ', table_name) SEPARATOR '; ') 
INTO @sql_command
FROM information_schema.tables 
WHERE table_schema = @db AND table_name LIKE @pattern;
 
-- 4. Vérifier la commande générée (Optionnel mais recommandé pour sécurité)
-- Affiche la commande qui va être exécutée. Si le résultat est NULL, aucune table ne correspond.
SELECT @sql_command; 
 
-- 5. Exécuter la suppression si la commande n'est pas NULL
PREPARE stmt FROM @sql_command;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;