Maison >base de données >tutoriel mysql >Comment automatiser le dumping des tables de base de données dans MySQL sans spécifier les noms des tables ?
Automatisation du dumping des tables de base de données pour MySQL
MySQL offre une méthode pratique pour vider les données des tables dans des fichiers individuels, ce qui peut être utile à des fins de sauvegarde . Cependant, spécifier manuellement chaque nom de table dans la commande dump devient peu pratique dans les environnements dynamiques où le nombre de tables peut changer au fil du temps. Cet article explore une solution pour automatiser le processus de vidage, garantissant que toutes les tables existantes sont capturées dans des fichiers séparés.
Dumping automatique
Alors que la syntaxe par défaut de MySQL nécessite la connaissance des tables noms au préalable, il n’existe pas de commande directe pour vider automatiquement toutes les tables. Cependant, une combinaison de commandes et de scripts peut accomplir cette tâche.
Approche Script-fu
Une approche consiste à créer un script qui interroge la base de données pour récupérer tous les noms de tables. . Par la suite, il peut parcourir la liste et vider chaque table individuellement. Divers langages de script peuvent accéder aux bases de données MySQL, notamment Python, Perl et PHP.
Exemple de script Bash
Vous trouverez ci-dessous un exemple de script Bash qui sauvegarde les données de table sous forme de commandes SQL. dans des fichiers compressés séparés :
<code class="bash">#!/bin/bash # Descr: Dump MySQL table data into separate SQL files for a specified database. # Usage: Run without args for usage info. [ $# -lt 3 ] && echo "Usage: $(basename ) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1 DB_host= DB_user= DB= DIR= [ -n "$DIR" ] || DIR=. test -d $DIR || mkdir -p $DIR echo -n "DB password: " read -s DB_pass echo echo "Dumping tables into separate SQL command files for database '$DB' into dir=$DIR" tbl_count=0 for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables') do echo "DUMPING TABLE: $DB.$t" mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > $DIR/$DB.$t.sql.gz tbl_count=$(( tbl_count + 1 )) done echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"</code>
Utilisation et avantages
Ce script demande le mot de passe de la base de données et transfère les données dans des fichiers compressés dans le répertoire spécifié. Cela élimine le besoin de mettre à jour manuellement le script de vidage lorsque de nouvelles tables sont ajoutées. De plus, il peut être facilement étendu pour vider plusieurs bases de données en fournissant une liste de noms de bases de données séparés par des virgules comme troisième argument.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!