「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL テーブルを別のファイルに自動的にダンプするにはどうすればよいですか?

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

2024 年 12 月 21 日に公開
ブラウズ:326

How Can I Automate Dumping MySQL Tables into Separate Files?

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