ユーザ用ツール

サイト用ツール


サイドバー

db:mysql:特定の接頭語がついたテーブルのみ_dump_したい場合

特定の接頭語がついたテーブルのみ dump したい場合

like で対象テーブルを抽出し、パイプ(|)と xargs で mysqldump の引数として渡せば可能です。

# 接頭語 hoge_ というテーブルに対して dump を実行
mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"' | xargs mysqldump -h HOST -p -u USER DB_NAME > dump_hoge.sql

# dump ファイルが生成されていることを確認
ls -l
dump_hoge.sql

以下コマンド解説

オプション【-e】で「sql を実行」しています

mysql -h HOST -p -u USER DB_NAME -e 'show tables like "hoge_%"'
+----------------------------+
| Tables_in_DB_NAME (hoge_%) |
+----------------------------+
| hoge_hoge                  |
| hoge_fuga                  |
+----------------------------+

ただし上記の結果をそのままパイプすると、「Tables_in_DB_NAME (hoge_%)」という項目名も渡されてしまい、以下のようなエラーが表示されます。

mysqldump: Couldn't find table: “Tables_in_DB_NAME”

そこで、オプション【-N】で「カラム名を非表示」にします。 この結果をパイプし、xargs で mysqldump の引数として渡しています

mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"'
+------------+
| hoge_hoge  |
| hoge_fuga  |
+------------+

コメント

コメントを入力. Wiki文法が有効です:
 
db/mysql/特定の接頭語がついたテーブルのみ_dump_したい場合.txt · 最終更新: 2019/06/17 12:11 by yusuke_komori