ホームページ  >  記事  >  データベース  >  MySQL テーブルを別のファイルにダンプすることを自動化するにはどうすればよいですか?

MySQL テーブルを別のファイルにダンプすることを自動化するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 04:46:02620ブラウズ

How Can I Automate Dumping MySQL Tables into Separate Files?

MySQL テーブルを個別のファイルに自動的にダンプします

組み込みの mysqldump ユーティリティにより、テーブルを選択してダンプできますが、事前に指定されたテーブル名が必要です。新しいテーブルの追加を処理する動的なアプローチには、自動化されたソリューションが必要です。

そのようなソリューションの 1 つは、データベースにすべてのテーブル名を動的にクエリし、各テーブルを個別の圧縮ファイルにダンプするシェル スクリプトです。これにより、ダンプ スクリプトでテーブル名を手動でメンテナンスする必要がなくなります。

この機能を実現するサンプル スクリプトは次のとおりです。

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

このスクリプトは、データベース パスワードの入力を求め、指定されたデータベースをクエリします。テーブル名を取得し、各テーブルのデータを SQL コマンドとして指定されたディレクトリ (またはデフォルトでは現在の作業ディレクトリ) 内の個別の圧縮ファイルにダンプします。

以上がMySQL テーブルを別のファイルにダンプすることを自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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