ホームページ >データベース >mysql チュートリアル >事前にテーブル名を知らなくても、MySQL テーブルを別のファイルに自動的にダンプするにはどうすればよいですか?

事前にテーブル名を知らなくても、MySQL テーブルを別のファイルに自動的にダンプするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 15:19:03280ブラウズ

How can I automatically dump MySQL tables into separate files without knowing table names beforehand?

MySQL テーブルの個別ファイルへのダンプの自動化

Mysqldump は、MySQL テーブルを個別のファイルにダンプする便利な方法を提供します。ただし、テーブル名を事前に知っておくことには制限があります。これに対処するために、各テーブルを自動的にダンプする別のアプローチがあります。

スクリプトベースのアプローチ:

script-fu を利用することで、データベースにクエリを実行して取得できます。すべてのテーブル名を入力し、ダンプを実行するスクリプトを作成します。 MySQL データベースにアクセスできるスクリプト言語をいくつか示します。

  • mysql-connector または sqlalchemy を使用した Python
  • PDO または mysqli を使用した PHP
  • mysql2 を使用した Ruby
  • JDBC または JPA を使用した Java

自己完結型 Bash スクリプト:

提供された Bash スクリプトはプロセスをさらに合理化し、追加のスクリプト作成の必要性を排除します。知識:

<code class="bash">#!/bin/bash

# dump-tables-mysql.sh
[ $# -lt 3 ] && echo "Usage:  <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

read -sp "DB password: " 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>

このスクリプトは、データベース パスワードの入力を求め、各テーブルのデータを個別の圧縮 SQL ファイルにダンプし、指定されたディレクトリに保存します。テーブル名の取得からダンプ ファイルの作成まで、必要なすべての手順を処理します。

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

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