Maison >base de données >tutoriel mysql >Comment puis-je vider automatiquement les tables MySQL dans des fichiers séparés sans connaître au préalable les noms des tables ?

Comment puis-je vider automatiquement les tables MySQL dans des fichiers séparés sans connaître au préalable les noms des tables ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 15:19:03283parcourir

How can I automatically dump MySQL tables into separate files without knowing table names beforehand?

Automatisation des vidages de tables MySQL dans des fichiers séparés

Mysqldump offre un moyen pratique de vider les tables MySQL dans des fichiers individuels. Cependant, connaître les noms des tables à l'avance constitue une limitation. Pour résoudre ce problème, il existe des approches alternatives pour vider automatiquement chaque table.

Approche basée sur un script :

En tirant parti de script-fu, vous pouvez interroger la base de données pour récupérer tous les noms de tables et créez un script qui effectue les vidages. Voici quelques langages de script capables d'accéder aux bases de données MySQL :

  • Python avec mysql-connector ou sqlalchemy
  • PHP avec PDO ou mysqli
  • Ruby avec mysql2
  • Java avec JDBC ou JPA

Script Bash autonome :

Le script Bash fourni rationalise davantage le processus, éliminant ainsi le besoin de scripts supplémentaires connaissances :

<code class="bash">#!/bin/bash

# dump-tables-mysql.sh
[ $# -lt 3 ] && echo "Usage:  <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

read -sp "DB password: " 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>

Ce script demande le mot de passe de la base de données, transfère les données de chaque table dans un fichier SQL compressé distinct et les stocke dans un répertoire spécifié. Il gère toutes les étapes nécessaires, de la récupération des noms de table à la création des fichiers de vidage.

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