Maison  >  Article  >  base de données  >  Comment automatiser le dumping des tables de base de données dans MySQL sans spécifier les noms des tables ?

Comment automatiser le dumping des tables de base de données dans MySQL sans spécifier les noms des tables ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 19:33:29691parcourir

How to Automate Database Table Dumping in MySQL Without Specifying Table Names?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn