mysqldump でカジュアルにデータのコピー

MySQL Casual Advent Calendar 2011 22日目の記事です。

いろんなAdvent Calendarの敷居を下げたり、下げ過ぎたりしているid:k12uです。

実はいろんなことに使えるみんな大好きmysqldump。

あるhost.db.tableのデータの一部を他のhost.db.table にカジュアルに移したいといったケースのために大変重宝しております。

意外とあまり知られていない "-w" オプションを使うことでSQLでおなじみの絞り込みができます。

-w 'row_id = 111' #重要です

このような感じでデータの出力を確認し、OKならパイプで直接 mysqlコマンドに食わせることで簡単にデータコピーできます。

さてこんな便利な mysqldump ですがオプションを調べようとしてターミナルでmysqldump --help と打とうものなら大量のメッセージが流れて・・・という人も多いんじゃないでしょうか。

そこで筆者がよく使うオプションをまとめてみました。選ぶ基準も説明も筆者の思いつきという大変なカジュアル具合です。

  • --compact
    • カジュアル的にはよくわからない><表示を抑制できるので大変カジュアルです。
  • -n, --no-create-db
    • create database 文を出力しないようになります。
  • -t, --no-create-info
    • create table 文を出力しないようになります。
  • -d, --no-data
    • data (insert文) を出力しないようにします
  • -w, --where=name
    • where の絞り込み条件を指定します。

しっかりちゃんと機能のあるデータコピーをやりたい場合はDBIx::Replicateなどを使うとよいと思いますが、
簡単な例であれば「mysqldumpコマンドからのmysqlにパイプでズッキューン!」でなんとかなるし簡単だよ!という話でした。

今日も大変カジュアルでしたね!

明日は永遠の新人@Spring_MTさんです。