mysqldumpオプションまとめ。whereで条件を指定したりする


mysqldumpコマンドを使ってMySQLのデータをダンプする毎日を送っているzaruです。ダンプしまくるのはいいんだけど、実際に必要なデータって全部じゃなかったりするわけです。というわけで、mysqldumpのよく使うパターンをまとめてみた。

指定テーブルだけダンプする

まぁ、まず基本。データベース丸ごとじゃなくて指定したテーブルだけダンプしたい。

$ mysqldump -u user DB名 テーブル名A テーブル名B > dump.sql

単純にデータベース名の後ろに欲しいテーブル名を記載するだけ。

テーブル作成情報は必要ない

上記のダンプだと、drop table + create table文も同時に作成される。これらが必要ない場合は「-t」オプションを使う。

$ mysqldump -u user -t DB名 テーブル名A テーブル名B > dump.sql

これで純粋にinsert文だけ取れる。

逆にテーブルの構成情報・スキーマだけ欲しい

結構よく使う。create table文のみ。レコード情報は必要ない場合。「--no-data」オプションを使う。「-d」の短縮でもOKだけど、なんかdropしそうで怖いので、あえて--no-dataの方を使っている。

$ mysqldump -u user --no-data DB名 > dump.sql

whereで指定したレコードのみダンプしたい

「--where(-w)」オプションを指定すると、whereが使える。指定テーブルだけではレコード数が多すぎて困るという場合や、予め必要なデータだけに絞ってダンプしたい場合に使う。かなり便利。

$ mysqldump -u user DB名 --where 'is_delete = 0' > dump.sql

ちなみに、複数テーブルあった場合、すべてのテーブルに対して同じwhereを適用してくれる。

XMLフォーマットでダンプする

「--xml(-X)」オプションを指定すると、XMLフォーマットでダンプする。あまり使う場面はないけど。

$ mysqldump -u user DB名 --xml > dump.xml

その他

--optオプションというダンプデータを高速にインポートできるように最適化するものがあるが、MySQL5.1あたりくらいからデフォルトで有効になっているので指定する必要ない。

Feed

最新記事

開発フローを独自進化させ続けている開発チームの話

こんにちは CTO の [@zaru](https://twitter.com/zaru) です。 スクラム開発をしている開発チームが、開発フローを独自進化させていて、それが良い取り組みだったので紹介しようと思います。 #...

235650?v=4
zaru
2017年11月20日

退職者を招いたLTイベントを開催した

こんにちは、ベーシック CTO [@zaru](https://twitter.com/zaru) です。 ベーシック開発部では毎月月末の金曜日にTGIFと称して、 ~~飲み会 + アナログゲームなイベント~~ 技術 LT 大会...

235650?v=4
zaru
2017年10月12日

山形ラボ、TGIFはじめました

こんにちは。株式会社ベーシック山形ラボの長谷川です。 いろんなところで書いたりなんだりしてますが、弊社には山形に「山形ラボ」というリモート拠点がありまして、そこで4人のエンジニアが働いております。 今回は その山形ラボで、...

10917612?v=4
roki1801
2017年10月10日