info:mysql:drop_table

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
info:mysql:drop_table [2023/03/20 14:11] – créée radeffinfo:mysql:drop_table [2026/09/17 12:07] (Version actuelle) radeff
Ligne 3: Ligne 3:
 echo "SET FOREIGN_KEY_CHECKS = 0;" > ./temp.sql echo "SET FOREIGN_KEY_CHECKS = 0;" > ./temp.sql
 mysqldump --add-drop-table --no-data -u root -p db_name | grep 'DROP TABLE' >> ./temp.sql mysqldump --add-drop-table --no-data -u root -p db_name | grep 'DROP TABLE' >> ./temp.sql
 +</code>
 +
 +===== 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_.*//
 +
 +<code bash>
 +#!/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é."
 +</code>
 +
 +
 +===== supprimer en masse: mysql cmd =====
 +<code mysql>
 +-- 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;
 </code> </code>
  
  • info/mysql/drop_table.1679317873.txt.gz
  • Dernière modification : 2023/03/20 14:11
  • de radeff