Maison  >  Article  >  base de données  >  Comment puis-je automatiser le dumping des tables MySQL dans des fichiers séparés ?

Comment puis-je automatiser le dumping des tables MySQL dans des fichiers séparés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 04:46:02620parcourir

How Can I Automate Dumping MySQL Tables into Separate Files?

Vider automatiquement les tables MySQL dans des fichiers séparés

L'utilitaire mysqldump intégré permet des vidages sélectifs de tables, mais nécessite des noms de tables prédéfinis . Pour une approche dynamique qui gère les ajouts de nouvelles tables, une solution automatisée est nécessaire.

L'une de ces solutions est un script shell qui interroge dynamiquement la base de données pour tous les noms de table et vide chaque table dans un fichier compressé distinct. Cela élimine le besoin de maintenance manuelle du nom de table dans le script de vidage.

Voici un exemple de script qui réalise cette fonctionnalité :

<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.
# Author: @Trutane

[ $# -lt 3 ] && echo "Usage: $(basename ) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=${4:-.}

[ -d $DIR ] || mkdir -p $DIR

echo -n "DB password: "
read -s DB_pass

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>

Ce script demande le mot de passe de la base de données et interroge la base de données spécifiée. pour les noms de table et vide les données de chaque table sous forme de commandes SQL dans des fichiers compressés individuels dans le répertoire spécifié (ou le répertoire de travail actuel par défaut).

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