MySQL テーブルを個別のファイルに自動的にダンプする
組み込みの mysqldump ユーティリティを使用すると、選択したテーブル ダンプが可能になりますが、事前に指定されたテーブル名が必要です。新しいテーブルの追加を処理する動的なアプローチには、自動化されたソリューションが必要です。
そのようなソリューションの 1 つは、データベースにすべてのテーブル名を動的にクエリし、各テーブルを個別の圧縮ファイルにダンプするシェル スクリプトです。これにより、ダンプ スクリプトでテーブル名を手動でメンテナンスする必要がなくなります。
この機能を実現するサンプル スクリプトは次のとおりです:
#!/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 $0) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1
DB_host=$1
DB_user=$2
DB=$3
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"
このスクリプトは、データベース パスワードの入力を要求し、指定されたデータベースにテーブル名を問い合わせて、各テーブルのデータを SQL コマンドとして個別にダンプします。指定されたディレクトリ (またはデフォルトでは現在の作業ディレクトリ) 内の圧縮ファイル。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3