ホームページ >データベース >mysql チュートリアル >テーブル名を指定せずに MySQL でデータベース テーブルのダンプを自動化する方法
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 サイトの他の関連記事を参照してください。