ホームページ >データベース >mysql チュートリアル >テーブル名を指定せずに MySQL でデータベース テーブルのダンプを自動化する方法

テーブル名を指定せずに MySQL でデータベース テーブルのダンプを自動化する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 19:33:29767ブラウズ

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

MySQL のデータベース テーブル ダンプの自動化

MySQL は、テーブル データを個々のファイルにダンプする便利な方法を提供しており、バックアップの目的で役立ちます。 。ただし、時間の経過とともにテーブルの数が変化する可能性がある動的環境では、dump コマンドで各テーブル名を手動で指定することは現実的ではありません。この記事では、ダンプ プロセスを自動化し、既存のすべてのテーブルが個別のファイルにキャプチャされるようにするソリューションを検討します。

自動ダンピング

MySQL のデフォルト構文にはテーブルの知識が必要ですが、事前に名前を付けておくと、すべてのテーブルを自動的にダンプする直接コマンドはありません。ただし、コマンドとスクリプトを組み合わせれば、このタスクを実行できます。

スクリプトによるアプローチ

1 つのアプローチでは、データベースにクエリを実行してすべてのテーブル名を取得するスクリプトを作成します。 。その後、リストを反復処理して、各テーブルを個別にダンプできます。 Python、Perl、PHP など、さまざまなスクリプト言語で MySQL データベースにアクセスできます。

サンプル Bash スクリプト

以下は、テーブル データを SQL コマンドとしてダンプするサンプル Bash スクリプトです。

<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>

使用法と利点

このスクリプトは、データベース パスワードの入力を求め、指定されたディレクトリ内の圧縮ファイルにデータをダンプします。これにより、新しいテーブルが追加されたときにダンプ スクリプトを手動で更新する必要がなくなります。さらに、3 番目の引数としてデータベース名のカンマ区切りリストを指定することで、複数のデータベースをダンプするように簡単に拡張できます。

以上がテーブル名を指定せずに MySQL でデータベース テーブルのダンプを自動化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。