ユーザ用ツール

サイト用ツール


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

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

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

  1. # 接頭語 hoge_ というテーブルに対して dump を実行
  2. 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
  3.  
  4. # dump ファイルが生成されていることを確認
  5. ls -l
  6. dump_hoge.sql

以下コマンド解説

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

  1. mysql -h HOST -p -u USER DB_NAME -e 'show tables like "hoge_%"'
  2. +----------------------------+
  3. | Tables_in_DB_NAME (hoge_%) |
  4. +----------------------------+
  5. | hoge_hoge |
  6. | hoge_fuga |
  7. +----------------------------+

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

mysqldump: Couldn't find table: “Tables_in_DB_NAME”

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

  1. mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"'
  2. +------------+
  3. | hoge_hoge |
  4. | hoge_fuga |
  5. +------------+

コメント

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