1. ホーム
  2. mysql

[解決済み] すべてのmysqlテーブルを自動的に別々のファイルにダンプしますか?

2023-08-28 09:50:32

質問

mysqlの各テーブルのダンプを別々のファイルに取り出したいのですが、どうすればよいでしょうか。マニュアルによると、このための構文は次のとおりです。

mysqldump [options] db_name [tbl_name ...]

というのは、事前にテーブル名を知っていることを示しています。今、各テーブル名を知っているスクリプトをセットアップすることはできますが、この先、新しいテーブルを追加して、ダンプ スクリプトを更新するのを忘れたとします。そうすると、1 つまたは複数のテーブルのダンプが失われます。

既存の各テーブルを別のファイルに自動でダンプする方法はありますか。または、データベースに問い合わせ、すべてのテーブル名を取得し、名前ごとにダンプする、いくつかのスクリプトを実行する必要があります。

スクリプトを実行する場合、どのようなスクリプト言語が mysql データベースにアクセスすることができますか?

どのように解決するのですか?

mysqldump コマンドライン プログラムを使用すると、この作業を行うことができます。 ドキュメント はこれに関して非常に不明瞭です。

注意すべき点は、~/output/dir は mysqld を所有するユーザーによって書き込み可能でなければならないことです。Mac OS X では。

sudo chown -R _mysqld:_mysqld ~/output/dir
mysqldump --user=dbuser --password --tab=~/output/dir dbname

上記を実行すると、各テーブルのスキーマ(create table文)を含むtablename.sqlファイルと、データを含むtablename.txtファイルが1つずつできあがります。

スキーマのみのダンプが必要な場合は、--no-dataフラグを追加してください。

mysqldump --user=dbuser --password --no-data --tab=~/output/dir dbname